我到处寻找,但只能找到对这类问题的间接引用。在开发android应用程序时,如果您有一个用户输入的字符串,如何将其转换为标题大小写(即。使每个单词的第一个字母大写)?我不想导入整个库(比如Apache的WordUtils)。
发布于 2015-03-05 04:31:21
/**
* Function to convert string to title case
*
* @param string - Passed string
*/
public static String toTitleCase(String string) {
// Check if String is null
if (string == null) {
return null;
}
boolean whiteSpace = true;
StringBuilder builder = new StringBuilder(string); // String builder to store string
final int builderLength = builder.length();
// Loop through builder
for (int i = 0; i < builderLength; ++i) {
char c = builder.charAt(i); // Get character at builders position
if (whiteSpace) {
// Check if character is not white space
if (!Character.isWhitespace(c)) {
// Convert to title case and leave whitespace mode.
builder.setCharAt(i, Character.toTitleCase(c));
whiteSpace = false;
}
} else if (Character.isWhitespace(c)) {
whiteSpace = true; // Set character is white space
} else {
builder.setCharAt(i, Character.toLowerCase(c)); // Set character to lowercase
}
}
return builder.toString(); // Return builders text
}
发布于 2012-09-12 19:50:20
你要找的是阿帕奇的WordUtils.capitalize()
method。
发布于 2012-09-12 19:47:51
我从这里得到了一些建议:Android,need to make in my ListView the first letter of each word uppercase,但最后,我提出了自己的解决方案(注意,这种方法假设所有单词都由一个空格字符分隔,这符合我的需要):
String[] words = input.getText().toString().split(" ");
StringBuilder sb = new StringBuilder();
if (words[0].length() > 0) {
sb.append(Character.toUpperCase(words[0].charAt(0)) + words[0].subSequence(1, words[0].length()).toString().toLowerCase());
for (int i = 1; i < words.length; i++) {
sb.append(" ");
sb.append(Character.toUpperCase(words[i].charAt(0)) + words[i].subSequence(1, words[i].length()).toString().toLowerCase());
}
}
String titleCaseValue = sb.toString();
...where输入是一个EditText视图。在视图上设置输入类型也很有帮助,这样它就可以默认为标题大小写:
input.setInputType(InputType.TYPE_TEXT_FLAG_CAP_WORDS);
https://stackoverflow.com/questions/12387492
复制相似问题