2011-09-28 7 views
7

Tôi nhận được số tiền được định dạng từ dịch vụ web. Nó có thể ở các định dạng khác nhau và sử dụng các loại tiền tệ khác nhau, ví dụ:Trích xuất đơn vị tiền tệ từ số tiền được định dạng

  • $ 1.10
  • € 1,10
  • 1,10 €
  • EUR 1.10 (có lẽ, tôi không chắc là tôi thực sự sẽ gặp phải cái này)

Tôi muốn trích xuất các biểu tượng tiền tệ ($) từ nó và nếu có thể, hãy lấy đối tượng Currency được liên kết (Java) từ biểu tượng đó. Tôi không cần phải trích xuất số tiền, tôi có thể nhận được rằng ở một nơi khác.

+0

Các chấp nhận câu trả lời SO đây có thể giúp: http://stackoverflow.com/questions/7116507/arbitrary-currency-string-get-all-parts-separated – Steve

Trả lời

0

getSymbol() phương pháp từ java.util.Currency sẽ giúp bạn để có được những ký hiệu tiền tệ

1

Bạn có thể có một cái nhìn tại Joda Money, nó có thể cung cấp một giải pháp cho vấn đề của bạn. Cảnh báo: nó vẫn là phiên bản 0.6

3

bạn có thể sử dụng cụm từ thông dụng, để phân tích kết quả của bạn từ webservice. Bạn phải lọc tất cả các ký tự, ngoại trừ số, dấu chấm và khoảng trắng. Đây là regex cho điều đó:

String regexp = "[^0-9\\.,\\s]*"; 

Nhóm đầu tiên của kết quả phù hợp là ký hiệu tiền tệ (hoặc tên ví dụ: EUR).

Đây là phương pháp mẫu của tôi:

public void test() throws Exception { 
    String text = "2.02 $"; 
    String regexp = "[^0-9\\.,\\s]*"; 
    Pattern p = Pattern.compile(regexp); 
    Matcher m = p.matcher(text); 
    while (m.find()) { 
     for (int i = 0; i < m.groupCount() + 1; i++) 
      LOG.info(m.group(i)); 
    } 
} 
+0

+1 cho 'ném ngoại lệ' (thay vì' try/catch/System.out.printStackTrace') – michael667