仅限字符串java中的第一个字母

时间:2012-12-13 07:48:15

标签: java string apache

我一直在使用apache WordUtils来大写字符串中的每个第一个字母,但我只需要将某些单词的第一个字母大写,而不是全部。这就是我所拥有的:

import org.apache.commons.lang.WordUtils;

public class FirstCapitalLetter {


    public static void main(String[] args) {
        String str = "STATEMENT OF ACCOUNT FOR THE PERIOD OF";
        str = WordUtils.capitalizeFully(str);
        System.out.println(str);

    }
}

我的输出是:

Statement Of Account For The Period Of

我希望我的输出

Statement of Account for the Period of

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:2)

1)创建一组你不想大写的字符串(一组例外):

Set<String> doNotCapitalize = new HashSet<>();
doNotCapitalize.add("the");
doNotCapitalize.add("of");
doNotCapitalize.add("for");
...

2)用空格分割字符串

String[] words = "STATEMENT OF ACCOUNT FOR THE PERIOD OF".split(" ");

3)遍历数组,只将那些不在异常集中的单词大写:

StringBuilder builder = new StringBuilder();
for(String word : words){
    String lower = word.toLowerCase();
    if(doNotCapitalize.contains(lower){
          builder.append(lower).append(" ");
    }
    else{
          builder.append(WordUtils.capitalizeFully(lower)).append(" ");
    }
 }
 String finalString = builder.toString();

答案 1 :(得分:1)

仅当字符串的长度超过3时,才对字符串中的每个单词运行WordUtils.capitalizeFully,这将适用于此特定情况

答案 2 :(得分:0)

你需要打破三个部分的字符串
1.声明 2.帐户 3.期间。