-2

有没有一种优雅的方法来比较两者Strings并检查它们是否不同?例如在 中Java,我通常使用类似这样的东西:

if (text1 != text2 || (text1 != null && !text1.equals(text2))) {
    // Texts are different
}

这是很常见的事情,我想知道也许有更好的方法。

编辑: 理想情况下,我想要一个适用于最常见的面向对象语言的伪代码。

4

4 回答 4

10

在 Java 7+ 中,您可以使用Objects#equals

if (!Objects.equals(text1, text2))

在引擎盖下,它的作用类似于您问题中的代码:

public static boolean equals(Object a, Object b) {
    return (a == b) || (a != null && a.equals(b));
}

请注意,顺便说一句,您的代码在 Java 中被破坏了:在这种情况下它将返回 false:

String text1 = "abc";
String text2 = new String("abc");
if (text1 != text2 || (text1 != null && !text1.equals(text2))) {
    System.out.println("Ooops, there is a bug");
}

编写isNotEquals条件的正确方法是:

if (text1 != text2 && (text1 == null || !text1.equals(text2)))
于 2013-06-11T08:32:37.040 回答
3

这(C#):

if(text1 != text2){
}

应该这样做,因为 == 运算符和 != 运算符被重载以进行正确的字符串比较。

MSDN 参考

于 2013-06-11T08:34:13.750 回答
3

Java(7 起):

Objects.equals(first, second);

C#:

string.Equals(first, second);
于 2013-06-11T08:37:34.233 回答
0

在 c# 中,我个人使用上面的

If(!string.IsNullOrEmpty(text1) || (!string.IsNullOrEmpty(text2) && (text1 != text2 )))
 {}
于 2013-06-11T08:34:45.487 回答