【发布时间】:2010-02-08 08:50:13
【问题描述】:
我创建了一个 Java 程序来比较两个字符串:
String str = "Hello";
if (str.equals("hello")) {
System.out.println("match");
} else {
System.out.println("no match");
}
区分大小写。我怎样才能改变它,使它不是?
【问题讨论】:
-
如果您知道它区分大小写,则可以在比较之前将其转换为小写或大写。
-
如果您使用
s1.equalsIgnoreCase(s2),您可能无法在需要完成的任何地方执行此操作。我建议您找到字符串的来源——可能是文件或数据库或用户输入——并转换为大写(或小写)并继续使用 .equals 进行比较。 -
不要转换为小写/大写(如上面 cmets 所建议的那样),使用公认的
equalsIgnoreCase方法。阅读土耳其语 I 问题和类似的 Unicode 问题以了解基本原理。 -
@OhadSchneider
equalsIgnoreCase无论如何返回土耳其语的错误值,因为它在比较“i”和“I”时返回 true,即使它应该返回 false。所以我怀疑如果你想考虑语言环境,Collator实际上是要走的路。 -
@OhadSchneider 我想知道。它说按字符执行会产生相同的结果,但是对整个字符串执行
toLowerCase/toUpperCase并按字符执行也会产生两种不同的结果。
标签: java string comparison case-insensitive