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

时间:2016-08-08 02:30:02

标签: java string

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

String str = "ALL CAPS MATE";

如何更改它,使其看起来像这样但是对于任何单词:

String result = "All Caps Mate";

是否有类似.toUpperCase()或.toLowerCase()的String方法?如果有,我似乎无法找到它。

我很感激字符串方法解决方案。

感谢。

3 个答案:

答案 0 :(得分:2)

我认为这可以通过使用apache库for more information

来解决您的问题
  

org.apache.commons.lang3.text.WordUtils

 String result= WordUtils.capitalizeFully(str);

对于更复杂的问题,请查看此link

我认为您的问题已经回答here

答案 1 :(得分:2)

apache库包含了一些方法来处理这个问题,正如B' bek Shakya所提到的那样,但是如果你正在寻找一个直接的本机Java解决方案,你可以像评论中提到的Bald Banta那样做。

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

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);
}

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

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());
}

答案 2 :(得分:1)

来自WordUtils的{​​{1}}类具有静态org.apache.commons.lang3.text方法,可以满足您的需求。你需要在类路径中使用commons lang3 jar。

capitalizeFully