【问题标题】:How to convert string numbers into comma separated integers in java?如何在java中将字符串数字转换为逗号分隔的整数?
【发布时间】:2011-09-20 07:59:48
【问题描述】:

谁能给我一些预定义的方法或用户定义的方法来将字符串数字(例如:123455)转换为逗号分隔的整数值(例如:1,23,455)。

【问题讨论】:

  • 你的意思是 1,23,455?应该是 123,456 还是 1,234,567 还是 1,23,45?答案很可能是;使用 DecimalFormat。
  • 如果你能解释一下算法在哪里放置逗号,那将是一个好处。
  • 我不明白逗号放置的逻辑。你能详细说明一下吗?
  • 逗号分隔的整数值??? int 值没有逗号。
  • 首先我要感谢大家的快速回复。我的意图,例如,如果字符串 1234 转换为货币,那么它将变成 1,234 美元。如果字符串是 123456 那么货币格式是 $1,23,456 。我需要这种格式。

标签: java string integer


【解决方案1】:

使用 java.text.NumberFormat,这将解决您的问题。

【讨论】:

  • 首先我要感谢大家的快速回复。我的意图,例如,如果字符串 1234 转换为货币,那么它将变成 1,234 美元。如果字符串为 123456 则货币格式为 $1,23,456 。我需要这种格式。
  • @sathish 要为不同的区域设置格式化数字,请在调用 getInstance 时指定它。 NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH) 所以如果你想要一个印度语言环境,可能会有一个适合那个
【解决方案2】:

您正在寻找的是 DecimalFormat 类 (here),您可以在其中轻松设置分隔符并将字符串转换为数字,例如使用 parse() 方法。

【讨论】:

    【解决方案3】:
    int someNumber = 123456;
    NumberFormat nf = NumberFormat.getInstance();
    nf.format(someNumber);
    

    【讨论】:

      【解决方案4】:

      我假设123455String

      String s = 123455;
      String s1 = s.substring( 0 , 1 );  // s1 = 1 
      String s2 = s.substring( 1 , 3 );  // s2 = 23
      String s3 = s.substring( 2 , 7 );  // s3 = 455
      s1 = s1 + ',';
      s2 = s2 + ',';
      s = s1 + s2;   // s is a String equivalent to 1,23,455 
      

      现在我们使用static int parseInt(String str) 方法将String 转换为整数。该方法使用基数10 返回str 指定的String 中包含的数字的整数等价物。

      在这里你不能转换 s ---> int 。由于 int 没有逗号。如果您尝试转换,您将得到以下异常 java.lang.NumberFormatException

      您应该使用DecimalFormat 类。 http://download.oracle.com/javase/1.4.2/docs/api/java/text/DecimalFormat.html

      【讨论】:

        【解决方案5】:

        您期望的结果是“以逗号分隔 integer 值”,在我看来是不正确的。但是,如果您只是在寻找输出表示,那么下面显示的这些代码行怎么样? (注意,您不能将 valueToString 的返回值解析为 long 的某种数据类型,因为它没有任何意义 :))

        MaskFormatter format = new MaskFormatter("#,##,###");
        format.setValueContainsLiteralCharacters(false);
        System.out.println(format.valueToString(123455));
        

        【讨论】:

          【解决方案6】:

          最后,我找到了满足我需求的确切解决方案。

          import java.math.*;
          import java.text.*;
          import java.util.*;
          public class Mortgage2 {
              public static void main(String[] args) {
                  BigDecimal payment = new BigDecimal("1115.37");
                  NumberFormat n = NumberFormat.getCurrencyInstance(Locale.US); 
                  double doublePayment = payment.doubleValue();
                  String s = n.format(doublePayment);
                  System.out.println(s);
              }
          }
          

          【讨论】:

            猜你喜欢
            • 2014-01-08
            • 2016-02-08
            • 1970-01-01
            • 2011-06-12
            • 1970-01-01
            • 2013-09-15
            • 2020-10-30
            相关资源
            最近更新 更多