java - 在 Java 中有意义地比较两个字符串

标签 java string numbers double long-integer

我有两个需要比较的字符串,但我想对它们进行有意义的比较,以便当它们是数字时,应该比较它们的实际值。到目前为止,我已经尝试了以下解决方案:

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/

相关文章:

c++ - strncpy() 获取字符串结尾

javascript - 如何识别和存储 JavaScript 中字符串中存在的变量中的数字?

python - Python 中正则表达式的混淆行为

javascript - 滚动上的 Jquery 计数器

java - 如何从android studio连接到cloud SQL?

java - Spring + hibernate : how to have a configurable PK generator?

java - 通用十进制格式

android - 选择数字和字符串的对话框

用于图像编辑的 Java 书,例如亮度/对比度等(新手友好)

java - java解析xml时出现异常