字符串在字典上比另一个字符串更大是什么意思?

时间:2014-04-07 11:36:35

标签: java string

我在java中有两个字符串:

s1 = "-7ff9";
s2 = "-7ff9";

我从服务器的响应中获取s2字符串。相反,字符串s1是参数的值。 当我问:

if(s1.equals(s2)){ System.out.println("YES");}
else System.out.println("NO");

我收到回复

然后我将其与字符串进行比较:

System.out.println(s1.compareTo(s2));

我得到 19 输出,这意味着"字符串s1按字典顺序大于字符串参数s2"

我只是不知道如何解决这个问题......

3 个答案:

答案 0 :(得分:8)

“Lexographically greater”表示如果按其(左对齐)字符的unicode值排序,它将在之后出现另一个字符串。

只是一个猜测,但这是我能想到的唯一原因解释了你所看到的:两个减号实际上并不是同一个字符。有几个字符看起来(打印)相似,但它们是不同的unicode字符。

有关被视为“破折号”的许多字符,请参阅this link

答案 1 :(得分:-2)

我使用以下方法解决了我的问题:

if (s1.contentEquals(s2))

答案 2 :(得分:-4)

您正在比较参考文献,而不是内容。 .equals()测试值的相等性。要忽略大小写,请使用equalsIgnoreCase()。字符串的compareTo按字典顺序比较两个字符串,意味着好像在进行比较