2016-10-13 5 views
0

У меня есть строка «Быть ​​выше 10385,29 в 14:25».Получить двойное значение от строки

Я хочу получить двойное значение из этой строки.

Стараюсь с шаблоном и Сличитель как:

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); 
} 

Но это работает странно и не находят двойное значение.

Я хочу, чтобы получить в результате Double value = 10385.29

Это значение может быть как xxx.xx или xxxxx.xx. После точки всегда есть два числа, но раньше может быть два, пять или более.

+1

См [это демо] (HTTPS://ideone.com/A4Uoay) –

+1

Убедитесь, что вы точно понимаете, что означает регулярное выражение. В настоящее время это, скорее всего, не означает, что вы думаете, что это значит. Обратите внимание, что '.' является специальным символом в регулярных выражениях. См. API-документы ['java.util.regex.Pattern'] (http://docs.oracle.com/javase/8/docs/api/). – Jesper

+3

Это уже ответили; см. [этот вопрос] (http://stackoverflow.com/questions/6734521/getting-a-double-out-of-a-string) для нескольких различных решений. –

ответ

1

, если значение строки сохраняется, как это «10385.29 2:25 вечера», то вы можете разбить его и использовать parseDouble, чтобы получить двойное значение, как это:

String ss = "10385.29 2:25pm"; 
    String vs[] = ss.split(" "); 
    double val = Double.parseDouble(vs[0]); 
    System.out.println(val); 
Смежные вопросы