Sau đây là kết quả Exception:
String p="1,234";
Double d=Double.valueOf(p);
System.out.println(d);
Có cách nào tốt hơn để phân tích "1,234"để có được 1.234hơn : p = p.replaceAll(",",".");?
replaceAll(",",".")thay thế tất cả các dấu phẩy bằng dấu chấm. Nếu không có dấu phẩy, thì nó không làm gì cả. Double.valueOf()hoạt động (chỉ) với các chuỗi sử dụng dấu chấm làm dấu tách thập phân. Không có gì ở đây bị ảnh hưởng bởi ngôn ngữ mặc định hiện tại. docs.oracle.com/javase/8/docs/api/java/lang/ triệt
replaceAll(",",".")là nó sẽ chỉ hoạt động nếu có một dấu phẩy duy nhất: tức là: 1,234,567 sẽ ném java.lang.NumberFormatException: multiple points. Một regex với cái nhìn tích cực sẽ đủ để biết p.replaceAll(",(?=[0-9]+,)", "").replaceAll(",", ".")thêm tại: normal-expressions.info/lookaround.html