我尝试了以下代码示例,但是没有用,
NumberFormat.getCurrencyInstance(Locale.US).parse("1,23$")
抛出异常
java.text.ParseException: Unparseable number: "1,23$"
答案 0 :(得分:2)
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);
答案 1 :(得分:1)
似乎您想要
public int getValue(String s) {
return Integer.parseInt(s.replaceAll("\\p{Punct}", ""));
}
答案 2 :(得分:1)
您不能同时使用一种数字格式进行检查。如果另一个失败,则需要尝试一个:
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"));
这使用货币模式占位符¤
。
答案 3 :(得分:0)
重新格式化您的字符串。
String s = "1,23$";
s = '$' + s.replaceAll("\\p{Punct}", "");
System.out.println(NumberFormat.getCurrencyInstance(Locale.US).parse(s));
答案 4 :(得分:0)
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)