java - 为什么我的新鲜字符串前面有空?

标签 java string apache-commons

我有以下函数,输入只是一个简单的字符串。

public X509CertificateHandler getCertByFingerprint(String thumbPrint) {
    if (_thumbprintMap.containsKey(thumbPrint)) {
        return _thumbprintMap.get(thumbPrint);
    }
}

所以在我的测试用例中,我只是对值进行硬编码只是为了测试它,但是我需要它们是大写的,所以我把它扔到 Apache Common 中,很简单吧?

certs.getCertByFingerprint(StringUtils.upperCase("‎eb55b661dd9133bc564aa259bcd0c598ce02892f"));

现在有趣的是,一旦我进入函数,传递到函数中的字符串值与我预期的不同!

由于某种原因,变量的开头似乎有某种null!将其放入我的表情 watch 中,我得到以下结果:

enter image description here

如您所见,字符串前面有一个额外的 [, 字符...这就是为什么我无法从数组中找到我要查找的内容的原因!但为什么呢?

为了确保我没有疯,我运行了以下命令:

String fingerprint = "‎eb55b661dd9133bc564aa259bcd0c598ce02892f";
String f2 = StringUtils.upperCase(fingerprint);
f2.equals(fingerprint);

由于我初始化了字符串,所以我不可能在它前面得到一个 null 。但是,上面的代码仍然给了我 [,在我的新鲜弦前面...wtf?

最佳答案

字符串的开头有一个不可见的字符,LEFT-TO-RIGHT MARK 。尝试运行这一行:

System.out.println(
        "eb55b661dd9133bc564aa259bcd0c598ce02892f".length() < 
        "‎eb55b661dd9133bc564aa259bcd0c598ce02892f".length()
);

输出:

true

它们看起来相同,但第二个具有您的隐藏角色。捕获第一根弦,你应该就可以了。

关于java - 为什么我的新鲜字符串前面有空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43946368/

相关文章:

client - 思科路由器的 Telnet 客户端

Java安全策略文件问题

java - 隐藏输入在 servlet 中给出 null

java - 在线程区域中仅执行一次某些代码

python - 如何将严格排序的字符串列表转换为字典?

c - C 中的奇怪字符串问题

java - MaltParser 1.5 PatternSyntaxException

ios - SWIFT 中类似于 UIColor.systemgray 的任何标准字符串

java - java中如何查找字符串是否以 's' ,'r' ,'p'开头

java - 如何使用apache通用配置加载多个配置文件(java)