我有一些问题,如果所有句子都是大写的话,如何大写字符串的第一个单词。 例如:" VESSEL ONE(L)INC" 我想要的输出:" Vessel One(L)Inc"
目前,我应用此代码,但这仅适用于小写
的所有句子String source = "vessel two management sdn bhd";
StringBuffer res = new StringBuffer();
String[] strArr = source.split(" ");
for (String str : strArr) {
char[] stringArray = str.trim().toCharArray();
stringArray[1] = Character.toLowerCase(stringArray[1]);
str = new String(stringArray);
res.append(str).append(" ");
}
res.toString().trim()
任何人都可以帮助我?
答案 0 :(得分:3)
首先,请StringBuilder
优先于StringBuffer
。其次,您可以使用WordUtils.capitalizeFully(String)
之类的
String source = "VESSEL ONE (L) INC";
String capitalized = WordUtils.capitalizeFully(source);
或(如果你不能使用apache commons)你可以写自己的
private static String capitalizeFully(String str) {
StringBuilder sb = new StringBuilder();
boolean cnl = true; // <-- capitalize next letter.
for (char c : str.toCharArray()) {
if (cnl && Character.isLetter(c)) {
sb.append(Character.toUpperCase(c));
cnl = false;
} else {
sb.append(Character.toLowerCase(c));
}
if (Character.isWhitespace(c)) {
cnl = true;
}
}
return sb.toString();
}
public static void main(String[] args) {
String source = "VESSEL ONE (L) INC";
System.out.println(capitalizeFully(source));
}
答案 1 :(得分:2)
如果使用lib,您可以尝试WordUtils。是一个选择。
另一种方法可能是在应用上面指定的操作之前转换整个字符串toLowerCase
。
答案 2 :(得分:0)
试试这个
StringBuffer sb = new StringBuffer();
Matcher m = Pattern.compile("\\b.+?\\b").matcher(source);
while(m.find()) {
String s = m.group().substring(0,1).toUpperCase() + m.group().substring(1).toLowerCase();
m.appendReplacement(sb, s);
}
String res = sb.toString();