可能重复:
大写字符串Java中每个单词的第一个字符
我有一个字符串:"你好旧世界",我希望每个单词的每个第一个字母大写,而不是整个字符串.toUpperCase().是否有现有的java助手来完成这项工作?
aka*_*okd 126
看看ACL WordUtils.
WordUtils.capitalize("your string") == "Your String"
Run Code Online (Sandbox Code Playgroud)
ndo*_*nyo 67
这是代码
String source = "hello good old world";
StringBuffer res = new StringBuffer();
String[] strArr = source.split(" ");
for (String str : strArr) {
char[] stringArray = str.trim().toCharArray();
stringArray[0] = Character.toUpperCase(stringArray[0]);
str = new String(stringArray);
res.append(str).append(" ");
}
System.out.print("Result: " + res.toString().trim());
Run Code Online (Sandbox Code Playgroud)
小智 52
sString = sString.toLowerCase();
sString = Character.toString(sString.charAt(0)).toUpperCase()+sString.substring(1);
Run Code Online (Sandbox Code Playgroud)
小智 45
我不知道是否有功能,但如果没有现有功能,这将完成工作:
String s = "here are a bunch of words";
final StringBuilder result = new StringBuilder(s.length());
String[] words = s.split("\\s");
for(int i=0,l=words.length;i<l;++i) {
if(i>0) result.append(" ");
result.append(Character.toUpperCase(words[i].charAt(0)))
.append(words[i].substring(1));
}
Run Code Online (Sandbox Code Playgroud)
roy*_*hew 19
import org.apache.commons.lang.WordUtils;
public class CapitalizeFirstLetterInString {
public static void main(String[] args) {
// only the first letter of each word is capitalized.
String wordStr = WordUtils.capitalize("this is first WORD capital test.");
//Capitalize method capitalizes only first character of a String
System.out.println("wordStr= " + wordStr);
wordStr = WordUtils.capitalizeFully("this is first WORD capital test.");
// This method capitalizes first character of a String and make rest of the characters lowercase
System.out.println("wordStr = " + wordStr );
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
这是第一次WORD资本测试.
这是第一个字资本测试.
bin*_*kdm 12
这是一个非常简单,紧凑的解决方案.str包含你要做大写的任何变量.
StringBuilder b = new StringBuilder(str);
int i = 0;
do {
b.replace(i, i + 1, b.substring(i,i + 1).toUpperCase());
i = b.indexOf(" ", i) + 1;
} while (i > 0 && i < b.length());
System.out.println(b.toString());
Run Code Online (Sandbox Code Playgroud)
最好使用StringBuilder,因为String是不可变的,并且为每个单词生成新的字符串效率很低.
use*_*139 11
尝试提高内存效率,而不是将字符串拆分为多个字符串,并使用Darshana Sri Lanka所示的策略.此外,处理单词之间的所有空格,而不仅仅是""字符.
public static String UppercaseFirstLetters(String str)
{
boolean prevWasWhiteSp = true;
char[] chars = str.toCharArray();
for (int i = 0; i < chars.length; i++) {
if (Character.isLetter(chars[i])) {
if (prevWasWhiteSp) {
chars[i] = Character.toUpperCase(chars[i]);
}
prevWasWhiteSp = false;
} else {
prevWasWhiteSp = Character.isWhitespace(chars[i]);
}
}
return new String(chars);
}
Run Code Online (Sandbox Code Playgroud)
String s = "java is an object oriented programming language.";
final StringBuilder result = new StringBuilder(s.length());
String words[] = s.split("\\ "); // space found then split it
for (int i = 0; i < words.length; i++)
{
if (i > 0){
result.append(" ");
}
result.append(Character.toUpperCase(words[i].charAt(0))).append(
words[i].substring(1));
}
System.out.println(result);
Run Code Online (Sandbox Code Playgroud)
输出: Java是面向对象的编程语言.