如何将字符串中每个单词的首字母大写?

时间:2020-04-29 13:38:23

标签: java string

预期结果:

MailMessage msg = new MailMessage();
msg.Body = "";
msg.To.Add(...);
msg.To.Add(...);


SmtpClient smtp = new SmtpClient();
smtp.Send(msg);

实际结果:

input = "heLlo wOrLd"
output= "Hello World"

我的代码仅将句子的第一个单词大写:

output= "Hello world"

4 个答案:

答案 0 :(得分:2)

如果要使用流,可以执行以下操作:

String output = Arrays.stream(input.split(" "))
                      .map(word -> word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase())
                      .collect(Collectors.joining(" "));

答案 1 :(得分:1)

这是不言自明的。它只是转换为小写字符串,在空白处分割,然后将每个单词的第一个字符替换为大写形式。

String output = "";
for (String word : input.toLowerCase().split("\\s+")) {
    output += word.replaceFirst(".",word.substring(0, 1).toUpperCase()) + " ";
}
System.out.println(output);

或流(但效率不如第一种方法)。它执行完全相同的操作,但调用收集器以通过加入空格重新组装字符串。

String output = Arrays.stream(input.toLowerCase().split("\\s+"))
        .map(w -> w.replaceFirst(".",w.substring(0, 1).toUpperCase()))
        .collect(Collectors.joining(" "));

System.out.println(output);

答案 2 :(得分:0)

尝试一下:

    String input = "heLlo wOrLd";

    String a []= input.split(" ");
    String output = "";
    for (String s:a){
        output = output + s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase() + " ";

    }
    System.out.println(output);

答案 3 :(得分:0)

我想您会尝试其他一些单词句子。该代码对任何输入均有效。

        String input = scanner.nextLine();
        String[] array = input.split(" "); //separates the input by spaces
        String output = "";

        for (int i = 0; i < array.length; i++) {
            String word = array[i];
            String firstLetter = word.substring(0, 1).toUpperCase();
            String otherLetters = word.substring(1, word.length()).toLowerCase();

            word = firstLetter + otherLetters;
            output += word + " ";
        }

        System.out.println(output);