我有以下函数,输入只是一个简单的字符串。
public X509CertificateHandler getCertByFingerprint(String thumbPrint) {
if (_thumbprintMap.containsKey(thumbPrint)) {
return _thumbprintMap.get(thumbPrint);
}
}
所以在我的测试用例中,我只是对值进行硬编码只是为了测试它,但是我需要它们是大写的,所以我把它扔到 Apache Common 中,很简单吧?
certs.getCertByFingerprint(StringUtils.upperCase("eb55b661dd9133bc564aa259bcd0c598ce02892f"));
现在有趣的是,一旦我进入函数,传递到函数中的字符串值与我预期的不同!
由于某种原因,变量的开头似乎有某种null
!将其放入我的表情 watch 中,我得到以下结果:
如您所见,字符串前面有一个额外的 [,
字符...这就是为什么我无法从数组中找到我要查找的内容的原因!但为什么呢?
为了确保我没有疯,我运行了以下命令:
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/