Как мне вернуть число с плавающей запятой, начиная с определенного индекса в строке? - PullRequest
1 голос
/ 06 декабря 2010

У меня есть строка, содержащая такие данные, как:

String data = "Some information and then value1=17561.2 and then value2=15672.2"

Как наиболее эффективно вернуть 17561.2 в Java?

String queryString = "value1";

while data.charAt(outputStr.indexOf(queryString)+queryString.length()) is a number

    -save it to an array
    which you later convert to a String

elihw

Это кажется немного запутанным.

Были бы регулярные выражения здесь идеальными? Как бы я создал для этого регулярное выражение?

1 Ответ

1 голос
/ 06 декабря 2010

Чтобы найти десятичное число (или целое число) в строке, вы можете использовать регулярное выражение

[+-]?(?:\d*\.\d+|\d+)

Это не будет находить поплавки в экспоненциальной записи, хотя (1.2E15 или некоторые другие).

Пояснение:

[+-]?     # optional sign
(?:       # either
 \d*\.\d+ # float with optional integer part
 |        # or
 \d+      # just integer
)

В Java (для перебора всех совпадений в строке):

Pattern regex = Pattern.compile("[+-]?(?:\\d*\\.\\d+|\\d+)");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
    // matched text: regexMatcher.group()
    // match start: regexMatcher.start()
    // match end: regexMatcher.end()
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...