句子中每个带有符号的单词首字母大写
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 );
}
我有一个数据库,用于存储人们编写的字符串。例如,那些字符串定义了电影的名称。
为了克服重复和其他一些问题,我这样做了,无论用户输入什么,它都会使每个首字母大写。这样,所有的字符串都将以相同的方式保存。
我的方法是使用:
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 );
}