-1

我一直在使用 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

我怎样才能做到这一点?

4

3 回答 3

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();
于 2012-12-13T07:57:25.270 回答
1

仅当字符串的长度大于 3 时,才对字符串中的每个单词运行 WordUtils.capitalizeFully,这将在这种特定情况下起作用

于 2012-12-13T07:54:30.413 回答
0

U 需要将字符串分成三个部分
1. 声明
2. 帐户
3. 期间。

于 2012-12-13T07:52:55.907 回答