【问题标题】:How do I compare two numeric string in Java?如何比较Java中的两个数字字符串?
【发布时间】:2016-02-18 04:21:25
【问题描述】:

我想比较两个数字字符串,例如“1.0.1”和“2.1.1”。 我可以知道Java中是否有任何字符串实用程序方法可以比较或需要像删除.(点)那样实现,解析为整数并手动比较?谢谢。

【问题讨论】:

  • 如何将“1.0.1”解析为数字?它有 2 个小数点...
  • @Bus Car,据我所知,没有单一的实用方法可以解决您的目的。你需要按照你说的去实施。
  • @BusCar - 无论哪个答案对您有所帮助,请投票并接受答案。将问题标记为未解决是一个非常糟糕的习惯。否则,从下一次专家将阻止回答您的问题!祝你好运,:)

标签: java string-comparison


【解决方案1】:

您可以使用mystr.replace('.', '') 并使用mystr.equals(mystr2) 进行比较。或者将字符串作为数字进行比较,您可以解析为整数,如下所示:

myInt = Integer.parseInt(mystr);
if(myInt == myInt2) {
   // do something
}

【讨论】:

    【解决方案2】:

    删除.(点)

    myString.replaceAll("\\.","")
    

    解析为整数

    int myInt = Integer.parseInt(myString);
    

    手动比较

    if(myInt < myInt2) { // ....
    

    【讨论】:

    • 请通过Integer.parseInt更正Integer.parse
    【解决方案3】:

    拆分点上的字符串(string.split("\\.") — 您必须转义 .,因为 split 采用正则表达式,并且您必须转义转义,因为您将其键入为 Java 字符串文字),然后解析和比较两个字符串中的每个组件。当你这样做时,如果组件不相等,那就是你的答案;否则,继续下一个。如果没有下一个,则两个字符串相等。

    例如,给定“1.2.3”和“1.4.5”,拆分将是 ["1", "2", "3"] 和 ["1", "4", "5"] .因此,您首先要解析并比较索引 0 处的字符串;他们都是1,所以你去下一个索引。然后解析并比较索引 1 处的字符串; 2

    根据您的用例,您可能还需要涵盖用例,例如它们是否具有不同数量的组件(例如,“1.2.3”与“1.2”)。

    不要只删除点,正如其他答案所说,除非您希望 2.3.4 低于 1.23.4,因为 234

    【讨论】:

      【解决方案4】:

      您可以使用String.replaceAll(String regex, String replacement) 将所有点替换为空字符串。

      String str1 = "1.0.1";
      str1 = str1.replaceAll(".","");
      int num1 = Integer.parseInt(str1);
      // similarly for num2
      String str2 = "2.1.2";
      str2 = str2.replaceAll(".","");
      int num2 = Integer.parseInt(str2);
      if (num1 == num2)
      // do Something
      else
      // do Something else.
      

      【讨论】:

      • 请记住,字符串在 Java 中是不可变的,因此 String.replace() 方法将返回新字符串,而不仅仅是简化修改原始字符串。尝试:str1 = str1.replaceAll(".","");和 str2 一样
      • @Dave - 哦,谢谢。我忘记将新字符串分配给原始字符串引用。我同时在做两件作品,:D
      猜你喜欢
      • 2012-02-08
      • 1970-01-01
      • 1970-01-01
      • 2012-08-02
      • 2020-04-24
      • 1970-01-01
      • 2014-11-15
      • 2022-06-29
      • 2022-09-30
      相关资源
      最近更新 更多