java - 字符串中单词的大写

标签 java arrays split substring

当字符串以空格(“”)开头或字符串中有多个空格时,如何避免 StringIndexOutOfBoundsException? 实际上我需要将字符串中单词的首字母大写。

我的代码如下:

public static void main(String[] args) throws IOException {
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    String s = reader.readLine();
    String[] array = s.split(" ");

    for (String word : array) {
        word = word.substring(0, 1).toUpperCase() + word.substring(1); //seems that here's no way to avoid extra spaces
        System.out.print(word + " ");
    }
}

测试:

输入:“测试测试测试”

输出:“测试测试测试”

<小时/>

输入:“测试测试测试”

输出:

StringIndexOutOfBoundsException

预期:“测试测试测试”

我是 Java 新手,非常感谢任何帮助。谢谢!

最佳答案

split 将尝试在找到分隔符的每个位置中断字符串。因此,如果您按空格分割,并且将空格放置在字符串的开头,例如

" foo".split(" ")

您将得到结果数组,其中包含两个元素:空字符串“”和“foo”

["", "foo"]

现在,当您调用 "".substring(0,1)"".substring(1) 时,您正在使用索引 1它不属于该字符串。

因此,在根据索引进行任何字符串修改之前,请通过测试字符串长度来检查它是否安全。因此,请检查您尝试修改的单词的长度是否大于 0,或者使用更具描述性的内容,例如 if(!word.isEmpty())

关于java - 字符串中单词的大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37161364/

相关文章:

java - 在 XYJfree 图表中自定义条形颜色

java - 在 Spring Controller 上执行 $.ajax POST 后收到错误请求错误 (400)

java - 具有可调整数组大小的 toString 方法

javascript - 查找第一个非重复字符javascript

java - 如何使用struts 2标签分割字符串?

java - Eclipse 插件自定义 View 标记数

javascript - 声明空对象数组时无法使用构造函数创建新对象

string - 像 Python 中一样使用 zsh 分割字符串

ruby - 在 Ruby 中使用拆分时保留变音字符

java - Selenium webdriver 无法在 Firefox 26+ 上启动