2012-07-21 17 views
7

Java của NumberFormat là 1) không an toàn chủ đề (có thể được làm việc xung quanh với ThreadLocal); 2) inconvenient to use correctly đối với trường hợp sử dụng đơn giản nhất khi tôi biết liệu chuỗi nên chứa int, long, hoặc đôi, và muốn một API như:Số phân tích cú pháp một cách an toàn và địa phương nhạy cảm

int parseInt(String str, Locale locale) throws ParseException; 
int parseInt(String str, int defaultValue, Locale locale); 
long parseLong(String str, Locale locale) throws ParseException; 
long parseLong(String str, long defaultValue, Locale locale); 
double parseDouble(String str, Locale locale) throws ParseException; 
double parseDouble(String str, double defaultValue, Locale locale); 

nơi ngoại lệ được ném ra khi chuỗi không hoàn toàn phân tích cú pháp. Rõ ràng, như một wrapper rất dễ viết, nhưng tôi không thể tìm thấy một trong Guava hoặc Apache Commons Lang. Tôi đã bỏ lỡ nó? Hoặc là có một giải pháp tiêu chuẩn khác hay ít hơn cho điều này?

+0

Vấn đề của bạn với 'Integer.parseInt' và anh em là gì? –

+0

Tôi đoán nó không hỗ trợ các định dạng số khác nhau? –

+0

@MarkoTopolnik Chúng độc lập với miền địa phương, do đó, không sử dụng dấu tách thập phân chính xác, v.v. –

Trả lời