我有一个包含如下数据的字符串:
String data = "Some information and then value1=17561.2 and then value2=15672.2"
如何在Java中最有效地返回17561.2?
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
这似乎有点令人费解。
正则表达式在这里会完美吗?我将如何制作正则表达式来做到这一点?
最佳答案
要在字符串中查找十进制数字(或整数),可以使用正则表达式
[+-]?(?:\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()
}