如何在字符串中的每个首字母大写?

Chr*_*ris 93 java string

可能重复:
大写字符串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)

  • +1我喜欢这个,这是最简单的方法.但它需要被放在一个循环中,以满足问题的需要 (4认同)

小智 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)


Rup*_*rma 7

    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是面向对象的编程语言.