句子中每个带有符号的单词首字母大写

Capitalize first letter in each word with symbols in sentence

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

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

我的方法是使用:

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 条件来检查每个字母,例如 &, (, ), $ 等等?

toUpperCase 可以很好地处理 non-letter 个字符,并且 returns 个相同的字符。您的代码的问题在于它假设每个 word 都是 non-empty,在您删除特殊字符后不再如此。

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

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