Java 拆分单词并将第一个字符大写

Java 拆分单词并将第一个字符大写,java,Java,我正在获取需要格式化的用户输入。我需要删除所有前导/尾随空格,并且需要大写每个单词的第一个字母 这是我正在尝试的,但是。。。如果您输入的单词之间有两个空格,它将崩溃。我该如何解决这个问题 String formattedInput = ""; String inputLineArray[] = inputLine.getText().toString().trim().split("\\s"); for (int d=0; d<inputLineArray.length; d++) {

我正在获取需要格式化的用户输入。我需要删除所有前导/尾随空格,并且需要大写每个单词的第一个字母

这是我正在尝试的,但是。。。如果您输入的单词之间有两个空格,它将崩溃。我该如何解决这个问题

String formattedInput = "";
String inputLineArray[] = inputLine.getText().toString().trim().split("\\s");
for (int d=0; d<inputLineArray.length; d++) {
    formattedInput = formattedInput.trim() + " " +   
            inputLineArray[d].trim().substring(0,1).toUpperCase() +
            inputLineArray[d].trim().substring(1).toLowerCase();
}
String formattedInput=”“;
字符串inputLineArray[]=inputLine.getText().toString().trim().split(\\s”);

对于(int d=0;d将字符串标记化并按空格分割
,然后进行每次迭代并将其大写,然后再将其重新组合在一起


阅读所有关于字符串标记化的内容

将字符串标记化并按空格分割
”,然后进行每次迭代并将其大写,然后重新组合


阅读所有关于字符串标记化的内容

您的代码在多个空格上爆炸,因为当您拆分时,您的数组中有一个成员是空字符串“你好”当拆分变成
array[0]=“你好”
array[1]=“那里”
array[2]=“那里”

因此,当您执行
子字符串(0,1)
时,您应该会得到
索引outofboundsexception

尝试将
split(“\\s”)
更改为
split(\\s+”)
,这样您的多个空格就会在正则表达式中拾取并抛出

编辑:


这也将使您摆脱循环中的
.trim()
,因为所有的空格都将由拆分处理。

您的代码在多个空格上爆炸,因为当您拆分时,您的数组中有一个成员是空字符串
“hello here”
当拆分成为
数组[0]=“hello”
数组[1]=“
数组[2]=“那里”

因此,当您执行
子字符串(0,1)
时,您应该会得到
索引outofboundsexception

尝试将
split(“\\s”)
更改为
split(\\s+”)
,这样您的多个空格就会在正则表达式中拾取并抛出

编辑:


这也将使您摆脱循环中的
.trim()
,因为所有空格都将由拆分处理。

可能的解决方案您应该注意,您当前的代码不符合您声明的要求。您的要求是“大写第一个字母”而不是“将所有其他字母小写”。我很好奇你为什么把它们都改成小写。如果我输入“罗杰”,我希望是“罗杰”而不是“罗杰”。可能的解决办法是你应该注意,你当前的代码不符合你规定的要求。你的要求是“首字母大写”而不是“其他字母都改成小写”我很好奇你为什么把它们都改成小写。如果我输入“罗杰”,我希望是“罗杰”而不是“罗杰”。-1
String.split(String regex)
的引入完全是为了淘汰
StringTokenizer
,相比之下,它既笨重又笨拙。@glowcoder,我已经有一段时间没有使用java了,这就是我学习拆分字符串的方法。使用标记器-1
string.split(string regex)
的引入完全是为了淘汰
StringTokenizer
,相比之下,StringTokenizer既笨重又笨拙。@glowcoder,我已经有一段时间没有使用java了,这就是我学习拆分字符串的方式。使用标记器