java - 从具有千位分隔符的字符串中解析数字

标签 java string numbers string-parsing

我正在从给定的 String-s 中解析出 Long 值。

Long.valueOf()Long.parseLong() 将不起作用 - 因为这样的字符串 str 的格式为 1,234,567并且可以被空格包围。

我可以通过处理字符串以将其转换为裸数字来解决这个问题——然后解析出该值。所以 - 它会像

str.trim(); 
String tempArray [] = str.split(","); 
str = ""; 
for (String s:tempArray)
    str+=s; 

但是,必须有更好的方法来做到这一点。这是什么?

最佳答案

您可以使用 NumberFormat在这里,适当的 Locale . US 语言环境在这里就足够了。不过,您必须注意空格。

String str = "1,234,567";
NumberFormat format = NumberFormat.getInstance(Locale.US);
System.out.println(format.parse(str.replace(" ", "")));

您甚至可以使用 DecimalFormat这是稍微更强大。您可以添加任何分组或小数分隔符:

DecimalFormat decimalFormat = new DecimalFormat();
DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
decimalFormatSymbols.setGroupingSeparator(',');
decimalFormat.setDecimalFormatSymbols(decimalFormatSymbols);

System.out.println(decimalFormat.parse(str.replace(" ", "")));

关于java - 从具有千位分隔符的字符串中解析数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29080316/

相关文章:

java - 根上下文上的 JAX-RS 应用程序 - 怎么做?

javassist_123 与 javassist.util.proxy.Proxy 不兼容?

Java:序列化:如何仅存储引用,而不存储内容

c - 为什么当我打印父字符串的子字符串时,父字符串会自行打印?

c - 完美数字错误?

Java - 公共(public)字符串(字符 [] 值)

c++ - 如何生成一个随机的、不重复的字符串 C++

linux - 如何在 Bash 中将空格分隔的文本转换为行

random - 在 Julia 中生成唯一的随机数

python - 如何在 Python 中将正数转换为负数?