abe*_*t80 99
Apache Commons StringUtils.capitalize()或WordUtils.capitalize()
例如:WordUtils.capitalize("i am FINE") = "I Am FINE"
来自WordUtils doc
dfa*_*dfa 58
String类中没有capitalize()或titleCase()方法.你有两个选择:
StringUtils.capitalize(null) = null
StringUtils.capitalize("") = ""
StringUtils.capitalize("cat") = "Cat"
StringUtils.capitalize("cAt") = "CAt"
StringUtils.capitalize("'cat'") = "'cat'"
Run Code Online (Sandbox Code Playgroud)
public static String toTitleCase(String input) {
StringBuilder titleCase = new StringBuilder(input.lenght());
boolean nextTitleCase = true;
for (char c : input.toCharArray()) {
if (Character.isSpaceChar(c)) {
nextTitleCase = true;
} else if (nextTitleCase) {
c = Character.toTitleCase(c);
nextTitleCase = false;
}
titleCase.append(c);
}
return titleCase.toString();
}
Run Code Online (Sandbox Code Playgroud)
System.out.println(toTitleCase("string"));
System.out.println(toTitleCase("another string"));
System.out.println(toTitleCase("YET ANOTHER STRING"));
Run Code Online (Sandbox Code Playgroud)
输出:
String Another String YET ANOTHER STRING
sco*_*ttb 35
如果我可以提交解决方案......
以下方法基于dfa发布的方法.它进行了以下主要更改(适用于我当时需要的解决方案):它会强制输入字符串中的所有字符为小写,除非它后面紧跟一个"可操作的分隔符",在这种情况下,字符被强制转换为大写.
我的例程的一个主要限制是它假设"标题大小写"是为所有语言环境统一定义的,并且由我使用的相同案例约定表示,因此在这方面它不如dfa的代码有用.
public static String toDisplayCase(String s) {
final String ACTIONABLE_DELIMITERS = " '-/"; // these cause the character following
// to be capitalized
StringBuilder sb = new StringBuilder();
boolean capNext = true;
for (char c : s.toCharArray()) {
c = (capNext)
? Character.toUpperCase(c)
: Character.toLowerCase(c);
sb.append(c);
capNext = (ACTIONABLE_DELIMITERS.indexOf((int) c) >= 0); // explicit cast not needed
}
return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)
测试值
一个字符串
maRTin o'maLLEY
约翰威尔克斯展位
是另一个字符串
产出
一个字符串
马丁奥马利
约翰威尔克斯 - 布斯
又一串
jie*_*eng 20
使用Apache Commons的WordUtils.capitalizeFully().
WordUtils.capitalizeFully(null) = null
WordUtils.capitalizeFully("") = ""
WordUtils.capitalizeFully("i am FINE") = "I Am Fine"
Run Code Online (Sandbox Code Playgroud)
小智 10
你可以像这样使用apache commons langs:
WordUtils.capitalizeFully("this is a text to be capitalize")
Run Code Online (Sandbox Code Playgroud)
你可以在这里找到java doc: WordUtils.capitalizeFully java doc
如果你想删除世界之间的空格,你可以使用:
StringUtils.remove(WordUtils.capitalizeFully("this is a text to be capitalize")," ")
Run Code Online (Sandbox Code Playgroud)
你可以找到String StringUtils.remove java doc的java doc
我希望这有帮助.
这是基于@dfa 和@scottb 的回答的另一种处理任何非字母/数字字符的答案:
public final class TitleCase {
public static String toTitleCase(String input) {
StringBuilder titleCase = new StringBuilder(input.length());
boolean nextTitleCase = true;
for (char c : input.toLowerCase().toCharArray()) {
if (!Character.isLetterOrDigit(c)) {
nextTitleCase = true;
} else if (nextTitleCase) {
c = Character.toTitleCase(c);
nextTitleCase = false;
}
titleCase.append(c);
}
return titleCase.toString();
}
}
Run Code Online (Sandbox Code Playgroud)
给定输入:
MARY ÄNN O'CONNEŽ-ŠUSLIK
输出是
Mary Änn O'Connež-Šuslik
如果您想根据最新的Unicode标准获得正确答案,则应使用icu4j.
UCharacter.toTitleCase(Locale.US, "hello world", null, 0);
Run Code Online (Sandbox Code Playgroud)
请注意,这是区域设置敏感的.
归档时间: |
|
查看次数: |
107752 次 |
最近记录: |