我有两个需要比较的字符串,但我想对它们进行有意义的比较,以便当它们是数字时,应该比较它们的实际值。到目前为止,我已经尝试了以下解决方案:
String str1 = "-0.6";
String str2 = "-.6";
if (NumberUtils.isNumber(str1) && NumberUtils.isNumber(str2)) {
Number num1 = NumberUtils.createNumber(str1);
Number num2 = NumberUtils.createNumber(str2);
System.out.println(num1.equals(num2));
} else {
System.out.println(str1.equals(str2));
}
这是有效的,因为两者都被转换为 double
。
但这在以下情况下不起作用:
String str1 = "6";
String str2 = "6.0";
有什么简单的方法可以做到这一点,还是我必须编写自己的比较器?
最佳答案
而不是使用通用的 createNumber(String)
, 使用 createDouble(String)
强制它们加倍
:
String str1 = "-0.6";
String str2 = "-.6";
if (NumberUtils.isNumber(str1) && NumberUtils.isNumber(str2)) {
Double d1 = NumberUtils.createDouble(str1);
Double d2 = NumberUtils.createDouble(str2);
System.out.println(d1.equals(d2));
} else {
System.out.println(str1.equals(str2));
}
关于java - 在 Java 中有意义地比较两个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31531837/