android,从长字符串中提取值

时间:2012-05-03 15:13:05

标签: java android search design-patterns

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

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

  

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

这个词'沉没'是关键字。我希望得到百分比值(在这种情况下为44%)

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

**单词'将是'可能会改变。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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(?:[\\w\\s]*) (\\d+%)"

答案 2 :(得分:1)

只要您知道文本将始终以“正在下沉”开始,并且%将始终存在,无论周围的文本如何,这都将有效

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