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

标签 java

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

这就是我正在尝试的,但是...如果您输入单词之间有 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/

相关文章:

java - FindBugs:INT_VACUOUS_BIT_OPERATION

java - Jetty 7 延续 : How to *not* redispatch the request?

java - 以编程方式将全局变量添加到 gremlin 服务器

java - 混淆字符串引用比较 == 和 intern

java - 可视化堆栈中的推送方法?

java - 用正则表达式检查数字是否匹配

java - 优化多个 Java 数组添加

java - 如何在反序列化文档时忽略未使用的 XML 元素?

java - 关于 RESTful 和 Shiro 集成的示例

java - 无法找到窗口 - Selenium Webdriver 错误