2011-09-28 14 views
7

Otrzymuję sformatowaną kwotę pieniędzy z usługi internetowej. Może być w różnych formatach i przy użyciu różnych walut, np.Wyciągnij walutę z sformatowanej kwoty

  • $ 1.10
  • € 1,10
  • 1,10 €
  • EUR 1.10 (chyba, nie jestem pewien, że rzeczywiście spotkać ten jeden)

chciałbym wyodrębnić symbol waluty ($) i, jeśli to możliwe, pobierz powiązany obiekt Currency (Java) z tego symbolu. Nie muszę wyodrębniać tej kwoty, mogę ją zdobyć gdzie indziej.

+0

Przyjęty SO odpowiedzieć tutaj może pomóc: http://stackoverflow.com/questions/7116507/arbitrary-currency-string-get-all-parts-separated – Steve

Odpowiedz

0

getSymbol() metoda z java.util.Currency pomogą Ci uzyskać symbol waluty

1

Można spojrzeć na Joda Money, to może zaoferować rozwiązanie problemu. Uwaga: nadal jest to wersja 0.6

3

można użyć wyrażenia regularnego, aby przeanalizować wynik z usługi internetowej. Musisz filtrować wszystkie znaki, z wyjątkiem liczb, kropek i białych znaków. Oto regex że:

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

Pierwsza grupa wyniku dopasowania jest symbolem waluty (lub nazwa np euro).

Oto moja metoda próbki:

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 dla 'throws Exception' (zamiast' try/catch/System.out.printStackTrace') – michael667

Powiązane problemy