首页 > 解决方案 > 用句子中的符号将每个单词的第一个字母大写

问题描述

我有一个存储人们编写的字符串的数据库。例如,这些字符串定义了电影的名称。

为了克服重复和其他一些事情,无论用户输入什么,我都会这样做,它将每个首字母大写。这样,所有的字符串都将以相同的方式保存。

我这样做的方法是使用:

String[] words = query.split( "\\s+" );
for (int i = 0; i < words.length; i++) {
    String Word = words[i].replaceAll( "[^\\w]", "" );
    words[i] = Word.substring( 0, 1 ).toUpperCase() + Word.substring( 1 );
}
query = TextUtils.join( " ", words );

但是,当我尝试输入类似 Tom & Jerry 的内容时遇到了问题。

在这种情况下,我收到了一个错误&。我是否只需要设置 if 条件来检查每个字母,例如&, (, ), $等等?

标签: javastringuppercase

解决方案


toUpperCase处理非字母字符就好了,只返回相同的字符。您的代码的问题在于它假设每个word都是非空的,在您删除特殊字符后不再是这样。

长话短说,只要保留特殊字符,就可以了:

for (int i = 0; i < words.length; i++) {
    String word = words[i];
    words[i] = word.substring( 0, 1 ).toUpperCase() + word.substring( 1 );
}

推荐阅读