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

问题描述

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

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

我的方法是使用:

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 );
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...