【问题标题】:How can I convert a string(1,234) into a number(1234) using java [closed]如何使用java将字符串(1,234)转换为数字(1234)[关闭]
【发布时间】:2013-10-10 09:55:15
【问题描述】:

如何转换字符串

 (1,234) 

变成一个数字

(1234) 

使用java?

【问题讨论】:

  • 谷歌关闭了吗?伙计们,任何人都可以绕过一只死猫而不回答这个问题吗?
  • 将字符 ',' 替换为 ''。请参阅字符串 API 文档。
  • @SubirKumarSao 你不知道哪个 Locale OP 在...有些语言环境中这是一个有效的整数,而有些语言环境认为这是一个分数。 .
  • System.out.println("(1234)"); :)

标签: java


【解决方案1】:

使用DecimalFormat

DecimalFormat  format = new DecimalFormat  ("#,###");
Number aNumber = format.parse("1,234");
System.out.println(aNumber.intValue());

【讨论】:

  • 如果您要添加一个关于语言环境如何影响小数点的概念,那将是一个很好的答案。
【解决方案2】:

您可以为此使用NumberFormat

   String number = "1,234";
   NumberFormat numberFormat = NumberFormat.getInstance();
   int i = numberFormat.parse(number).intValue();

【讨论】:

    【解决方案3】:

    试试String.repaceAll()

    String value = "1,234";
    System.out.println(Integer.parseInt(value.replaceAll(",", "")));
    

    【讨论】:

    • 但我直接将其转换为整数。为什么我可以再次分配替换的值
    • 我不明白所有的反对票。此代码示例是正确的。但是,您可以在 println 语句中删除 ""+
    • @DuncanJones 我没有投反对票,该评论是针对这篇文章的先前编辑的。现在看来是正确的
    • 您编辑了您的答案。检查你的第一个..
    • @DuncanJones 现在也再次投反对票,我的意思是在编辑后
    【解决方案4】:

    字符串是不可变的,所以当你做replaceAll时,你需要将对象重新分配给字符串引用,

    String str = new String("1,234");
    str = str.replaceAll(",", "");
    System.out.println(Integer.parseInt(str));
    

    测试时效果很好。

    【讨论】:

      【解决方案5】:
      String str = new String("1,234");
          String str1=str.replace(",", "");
          Integer.parseInt(str1);
      

      试试上面的代码

      输出 第1234章

      【讨论】:

      • @downvoter 如果你没有得到输出那么请显示截图
      • 所有学分都归问题所有
      【解决方案6】:

      如果速度是一个主要问题,您可能会很快发现这样的事情。它击败了this 帖子中的所有人。

      int value(String s) {
        // Start at zero so first * 10 has no effect.
        int v = 0;
        // Work from the end of the string backwards.
        for ( int i = s.length() - 1; i >= 0; i-- ) {
          char c = s.charAt(i);
          // Ignore non-digits.
          if ( Character.isDigit(c)) {
            // Mul curent by 10 and add digit value.
            v = (v * 10) + (c - '0');
          }
        }
        return v;
      }
      

      【讨论】:

      • 这似乎是实现目标的一种相当手动的方式。有什么理由比更简洁的答案更受欢迎?
      • @DuncanJones - 如果速度是一个问题,它可能比所有其他人都快。对一两次反对票感到满意……如果速度很关键,这只是我会采取的一条路线。添加了警告。
      • FWIW,我自己并没有对你投反对票 - 答案看起来是正确的。我只是对可能的好处感兴趣。出于某种原因,有些人宁愿引发快乐的投票者传播这个问题。
      • 这只是重新发明轮子,如果输入字符串中的整数格式发生变化,则需要进行修改。 OP 并不关心速度。
      猜你喜欢
      • 2015-07-27
      • 1970-01-01
      • 2017-07-11
      • 2018-05-02
      • 1970-01-01
      • 2013-04-15
      • 2015-08-17
      • 1970-01-01
      相关资源
      最近更新 更多