如何更改全部大写字符串以使用首字母然后在每个空格后面的第一个字母?

How can I change an all caps string to capitalize on first letter and then first letter following each space? (Java)

本问题已经有最佳答案,请猛点这里访问。

假设我们在Java中有一个字符串:

1
String str ="ALL CAPS MATE";

我怎样才能改变它,使它看起来像这样,但任何一个字:

1
String result ="All Caps Mate";

是否有类似于.toUpperCase()或.toLowerCase()的字符串方法?如果有的话,我似乎找不到。

我希望得到一个字符串方法的解决方案。

谢谢。


Apache库包含一些方法来处理这一点,如B'Bek SkaYa和评论所提到的,但是如果你正在寻找一个直接的原生爪哇解决方案,你会在评论中提到Bald BANTA。

下面是使用流的代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
public static void main(String[] args) {
    String input ="fOo bar";
    String transformed = Arrays.stream(input.toLowerCase()
                                            .split(""))
                               .map(String::toCharArray)
                               .map(arr -> {
                                   arr[0] = Character.toUpperCase(arr[0]);
                                   return arr;
                               })
                               .map(String::valueOf)
                               .collect(Collectors.joining(""));
    System.out.println(transformed);
}

同样,使用更常见的循环习语:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void main(String[] args) {
    String input ="fOo bar";
    String[] words = input.toLowerCase().split("");
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < words.length; i++) {
        char[] word = words[i].toCharArray();
        word[0] = Character.toUpperCase(word[0]);
        if (i != 0) {
            sb.append("");
        }
        sb.append(String.valueOf(word));
    }
    System.out.println(sb.toString());
}

我认为这可以通过使用Apache库获得更多信息来解决您的问题。

org.apache.commons.lang3.text.WordUtils

1
 String result= WordUtils.capitalizeFully(str);

要了解更复杂的信息,请查看此链接

我想你的问题已经回答了


来自org.apache.commons.lang3.textWordUtils类有一个静态的capitalizeFully方法,可以满足您的需要。您将需要类路径中的通用语言3 JAR。

1
2
3
import org.apache.commons.lang3.text.WordUtils;

WordUtils.capitalizeFully(input);