问题描述
我有一个数据库,用于存储人们编写的字符串。例如,这些字符串定义了电影的名称。
为了克服重复和其他问题,我做到了无论用户键入什么内容,它都会使每个首字母大写。这样,所有字符串都将以相同的方式保存。
我的方法是使用:
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这样的字时,我遇到了一个问题。
在这种情况下,我遇到了&
错误。我是否只需要设置条件以检查每个字母,例如&,(,),$
等?
解决方法
toUpperCase
可以很好地处理非字母字符,并且只返回相同的字符。您的代码的问题在于,它假定每个word
都是非空的,删除特殊字符后就不再为真。
长话短说,只要保留特殊字符,就可以了:
for (int i = 0; i < words.length; i++) {
String word = words[i];
words[i] = word.substring( 0,1 ).toUpperCase() + word.substring( 1 );
}