1

我有一个长字符串,我想解析和检索一个值。我正在考虑使用模式,但我对此有点生疏。

这是我感兴趣的字符串部分:

...下沉将成功 44%...

“下沉”这个词是关键词。我正在寻找百分比值(在这种情况下为 44%)

什么是最好的方法?谢谢你。

**“将是”一词可能会发生变化。

4

3 回答 3

2

这是一个正则表达式解决方案:

String str = "...sinking will be 44% successful...";
Pattern p = Pattern.compile( "sinking will be (\\S*) successful" );
Matcher m = p.matcher( str );
if ( m.find() ) {
    String percent = m.group( 1 );
}

如果您只需要百分比的数值,请将您的模式更改为:

"sinking will be (\\d*)% successful"

如果前面的任何文本都不相关,您只想获取一行中的百分比,请使用以下模式:

"(\\d*%)"

编辑:如果您的关键字是“sinking”,并且您想要这个词之后的第一个百分比值,这将是您的模式:

"sinking(?:[\\w\\s]*) (\\d+%)"
于 2012-05-03T15:30:06.580 回答
2

如果它总是这种字符串,则简单的解决方案:

String splitMe = "...sinking will be 44% successful...";
String strPercents = splitMe.split(" ")[3];
System.out.println(strPercents);//test output

否则:好的正则表达式资源 http://www.vogella.com/articles/JavaRegularExpressions/article.html#examples

于 2012-05-03T15:19:10.593 回答
1

只要您知道文本将始终以“sinking will be”开头,并且 % 将始终存在,无论它周围的文本如何,它都会起作用

String s = "more text more text sinking will be 44% successful more text";
String find = "sinking will be ";
int findIndex = s.indexOf(find) + find.length();
int pctIndex = s.indexOf("%", findIndex);

String result = s.substring(findIndex , pctIndex);
于 2012-05-03T15:26:36.523 回答