Mar*_*tin 9 java string localization string-comparison
java.lang.String.equalsIgnoreCase由于不正确使用语言环境,有很多很多例子可以解释为什么以及何时会失败.
但我没有找到任何正确方法的例子.与java.lang.String.toUpperCase没有带语言环境参数的版本不同.将两个字符串转换为大写或小写似乎都是浪费.特别是当您正在进行大量比较的应用程序时.
在考虑区域设置和性能的情况下,进行忽略大小写字符串比较的正确方法是什么?
根据此页面,您可以使用 Collator 进行不区分大小写的相等操作,如下所示:
//retrieve the runtime user's locale
Locale locale = new Locale(getUserLocale());
//pass the user's locale as an argument
Collator myCollator = Collator.getInstance(locale);
//set collator to Ignore case but not accents
//(default is Collator.TERTIARY, which is
//case sensitive)
myCollator.setStrength(Collator.SECONDARY);
int i = myCollator.compare(stringA,stringB);
Run Code Online (Sandbox Code Playgroud)
(从上述网站复制...)
显然,在其他情况下您可能会以不同的方式选择区域设置。
对于 @fge - 此 Oracle Bug 报告给出了发生的这种情况的示例。
| 归档时间: |
|
| 查看次数: |
763 次 |
| 最近记录: |