通过更换以下内容,我会失去任何东西:
$ echo "4 5 1 2 3" | awk 'FNR==NR {n=split($0,lines); next} {a[FNR]=$0} END {for (i=1;i<=n;i++) print a[lines[i]]}' - a
来自JDK 7 Objects class:
public final boolean testEquals(String left, String right) {
if ((left == null && right != null) || (left != null && right == null)) {
return false;
} else if (left == null && right == null) {
return true;
} else {
return left.equalsIgnoreCase(right);
}
}
如果我失去了不区分大小写,请将其替换为
public final boolean testEquals(String left, String right) {
return Objects.equals(left,right);
}
足够?它有意义吗?
答案 0 :(得分:4)
如果您不仅限于JDK,您可以使用
StringUtils.equalsIgnoreCase(CharSequence str1, CharSequence str2)
是空的,并且会返回
StringUtils.equalsIgnoreCase(null, null) = true
StringUtils.equalsIgnoreCase(null, "abc") = false
StringUtils.equalsIgnoreCase("abc", null) = false
StringUtils.equalsIgnoreCase("abc", "abc") = true
StringUtils.equalsIgnoreCase("abc", "ABC") = true
答案 1 :(得分:1)
方法String.equalsIgnoreCase(String)
&#34;不幸的是&#34; 稍微复杂一点。您可以查看代码,但在the javadoc itself:
将此String与另一个String进行比较,忽略大小写。 如果它们是相同的,则认为两个字符串忽略大小写 两个字符串中的长度和对应字符是相等的 无视案例。
如果在,则两个字符c1和c2被视为相同的忽略大小写 至少有以下一种情况属实:
- 两个字符相同(通过==运算符比较)
- 将方法Character.toUpperCase(char)应用于每个字符会产生相同的结果
- 将Character.toLowerCase(char)方法应用于每个字符会产生相同的结果