我正在获取需要格式化的用户输入。我需要删除所有前导/尾随空格,并且需要将每个单词的第一个字母大写。
这就是我正在尝试的,但是...如果您输入单词之间有 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();
}
最佳答案
您的代码在多个空格上爆炸,因为当您拆分时,您会在数组中获得一个空字符串成员“hello there”
,当拆分变为array[0] =“hello”
、array[1] =“”
、array[2] =“there”
时。
因此,当您执行 substring(0,1)
时,您应该得到一个 IndexOutOfBoundsException
。
尝试将 split("\\s")
更改为 split("\\s+")
,这样您的多个空格就会在正则表达式中被拾取并丢弃。
编辑:
这还可以让您摆脱循环内的.trim()
,因为所有空格都将由拆分处理。
关于java - 拆分单词并将第一个字符大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5640838/