【问题标题】:Invisible characters in Java StringsJava 字符串中的不可见字符
【发布时间】:2012-09-23 00:51:13
【问题描述】:
String a = "Hello\u200e";
String b = "Hello\u200f";

System.out.println("a = '" + a + "' and b = '" + b + "' are length "
                     + a.length() + " and " + b.length()
                     + ", equals() is " + a.equals(b));

上述代码 sn -p 中的代码产生以下输出。

a = 'Hello‎' 和 b = 'Hello‏' 的长度为 6 和 6,equals() 为假

虽然ab在控制台上显示的值都是Hello‏,但a.equals(b)返回false。怎么样?

【问题讨论】:

    标签: java


    【解决方案1】:

    U+200EU+200F不可 可打印字符。它们都是控制字符,指示文本应如何呈现 - 从左到右或从右到左。

    您不会在终端中看到这些,它们不应该是等价的字符串。

    0x200E ^ 0x200F != 0

    【讨论】:

      【解决方案2】:

      因为字符序列不相同。仅仅因为它在控制台上看起来相同并不意味着对象是相同的。

      【讨论】:

        猜你喜欢
        • 2015-12-17
        • 1970-01-01
        • 2011-12-09
        • 1970-01-01
        • 1970-01-01
        • 2011-07-15
        • 1970-01-01
        • 1970-01-01
        • 2018-09-11
        相关资源
        最近更新 更多