2011-09-28 8 views
7

Ricevo una quantità di denaro formattata da un servizio web. Può essere in diversi formati e utilizzando diverse valute, ad es.Estrarre la valuta dall'importo formattato

  • $ 1.10
  • € 1,10
  • 1,10 €
  • EUR 1.10 (forse, non sono sicuro che sarò in realtà incontrato questo uno)

Vorrei estrarre il simbolo di valuta ($) da esso, e se possibile ottenere l'oggetto associato Currency (Java) da quel simbolo. Non ho bisogno di estrarre l'importo, posso averlo da qualche altra parte.

+0

La accettato SO risposta qui può aiutare: http://stackoverflow.com/questions/7116507/arbitrary-currency-string-get-all-parts-separated – Steve

risposta

0

getSymbol() metodo dal java.util.Currency vi aiuterà a ottenere il simbolo di valuta

1

Si potrebbe avere uno sguardo Joda Money, potrebbe offrire una soluzione per il vostro problema. Attenzione: è ancora versione 0.6

3

è possibile utilizzare un'espressione regolare per analizzare i risultati dal servizio web. Devi filtrare tutti i caratteri, eccetto numeri, punti e spazi bianchi. Ecco la regex per questo:

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

Il primo gruppo del risultato corrispondente è il simbolo di valuta (o il nome ad esempio EUR).

Ecco il mio metodo di campionamento:

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 per 'genera eccezioni' (invece di' try/catch/System.out.printStackTrace') – michael667