如何使用NumberFormat类在Java中解析“ 1,23 $”并获取123作为数字

我尝试了以下代码示例,但是没有用,

NumberFormat.getcurrencyInstance(Locale.US).parse("1,23$")

抛出异常

java.text.ParseException: Unparseable number: "1,23$"
lhp1231 回答:如何使用NumberFormat类在Java中解析“ 1,23 $”并获取123作为数字

    DecimalFormat df = new DecimalFormat();
    DecimalFormatSymbols dfs = new DecimalFormatSymbols();
    dfs.setCurrencySymbol("$");
    dfs.setGroupingSeparator('.');
    dfs.setDecimalSeparator(',');
    df.setDecimalFormatSymbols(dfs);       
    final Number parse = df.parse("1,23$");
    System.out.println(parse);
,

似乎您想要

public int getValue(String s) {
    return Integer.parseInt(s.replaceAll("\\p{Punct}",""));
} 
,

您不能同时使用一种数字格式进行检查。如果另一个失败,则需要尝试一个:

DecimalFormat format1 = 
    (DecimalFormat)NumberFormat.getNumberInstance(Locale.US);
format1.applyPattern("##,#0¤");

DecimalFormat format2 = 
    (DecimalFormat)NumberFormat.getNumberInstance(Locale.US);
format2.applyPattern("¤##,#0");

System.out.println(format1.parse("1,23$"));
System.out.println(format2.parse("$1,23"));

这使用货币模式占位符¤

,

重新格式化您的字符串。

String s = "1,23$";
s = '$' + s.replaceAll("\\p{Punct}","");
System.out.println(NumberFormat.getCurrencyInstance(Locale.US).parse(s));
,
Number number = NumberFormat.getCurrencyInstance(Locale.US).parse("$1,23");

        System.out.println("Number is "+ number ) ;

输出为

Number is 123

如果您传递值1,23$

Exception in thread "main" java.text.ParseException: Unparseable number: "1,23$"
    at java.text.NumberFormat.parse(NumberFormat.java:385)
    at com.example.polls.PollsApplicationTests.main(PollsApplicationTests.java:18)
本文链接:https://www.f2er.com/3053289.html

大家都在问