我正在获取需要格式化的用户输入。我需要删除所有前导/尾随空格,我需要将每个单词的第一个字母大写。
这是我正在尝试的东西,但是......如果你在单词之间输入2个空格的东西,它会崩溃。我怎么解决这个问题?
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();
}
答案 0 :(得分:1)
您的代码在多个空格中爆炸,因为当您拆分时,您在数组中获得的成员是空字符串"hello there"
,当拆分成为array[0] = "hello"
时,array[1] = ""
,{ {1}}。
因此,当您执行array[2] = "there"
时,您应该获得substring(0,1)
。
尝试将IndexOutOfBoundsException
改为split("\\s")
,这样就可以在正则表达式中拾取多个空格并将其丢弃。
编辑:
这也可以让你摆脱循环中的split("\\s+")
,因为分割会处理所有空格。
答案 1 :(得分:0)
对字符串进行标记并按空格" "
拆分,然后进行每次迭代并将其大写,然后再将它重新组合在一起
阅读有关字符串标记化here
的所有内容