2016-10-13 1 views
0

Ich habe eine Zeichenfolge "Um über 10385.29 um 2:25 Uhr zu sein".Get Double Wert von String

Ich möchte Double-Wert von dieser Zeichenfolge erhalten.

Ich versuche, mit Muster und Matcher wie:

Pattern pattern = Pattern.compile("(\\w+?).(\\w+?)"); 
Matcher matcher = pattern.matcher(instrumentName); 

while (matcher.find()) { 
    String key = matcher.group(1); 
    String value = matcher.group(2); 

    System.out.println("Key : " + key + " value : " + value); 
} 

Aber es funktioniert seltsam und nicht den doppelten Wert finden.

ich will als Ergebnis Double value = 10385.29

Dieser Wert wie xxx.xx oder xxxxx.xx sein kann. Nach dem Punkt sind immer zwei Zahlen, aber vorher können zwei, fünf oder mehr sein.

+1

See [diese Demo] (https://ideone.com/A4Uoay) –

+1

Stellen Sie sicher, dass Sie genau verstehen, was der reguläre Ausdruck bedeutet. Derzeit bedeutet es wahrscheinlich nicht, was Sie denken, dass es bedeutet. Beachten Sie, dass '.' ein Sonderzeichen in regulären Ausdrücken ist. Siehe die API-Dokumentation von ['java.util.regex.Pattern'] (http://docs.oracle.com/javase/8/docs/api/). – Jesper

+3

Dies wurde bereits beantwortet; Siehe [diese Frage] (http://stackoverflow.com/questions/6734521/getting-a-double-out-of-a-string) für ein paar verschiedene Lösungen. –

Antwort

1

wenn der String-Wert wie diese „10.385,29 14.25“ gespeichert ist, dann können Sie es geteilt und die parseDouble benutzen, um Ihren doppelten Wert wie folgt zu erhalten:

String ss = "10385.29 2:25pm"; 
    String vs[] = ss.split(" "); 
    double val = Double.parseDouble(vs[0]); 
    System.out.println(val);