我有一个很长的字符串,我想解析并检索一个值。 我正在考虑使用模式,但在这方面我有点生疏。android,从长字符串提取值
这是我感兴趣的字符串的一部分:
...下沉将是44%的成功...
字 '下沉' 是关键字。我期望得到的百分比值(在这种情况下为44%)
什么是最好的方式? 谢谢。
**“将会”的字词可能会改变。
我有一个很长的字符串,我想解析并检索一个值。 我正在考虑使用模式,但在这方面我有点生疏。android,从长字符串提取值
这是我感兴趣的字符串的一部分:
...下沉将是44%的成功...
字 '下沉' 是关键字。我期望得到的百分比值(在这种情况下为44%)
什么是最好的方式? 谢谢。
**“将会”的字词可能会改变。
这里是一个正则表达式的解决方案:
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+%)"
,谢谢杰森,但是在这篇文章前后有一些其他的百分比,所以我不认为这会起作用 – Ray
你知道吗?有多少?如果没有,那么这个百分比究竟是什么意思呢?你会如何选择这个比例? –
重读你的问题,看看我的编辑。 –
简单的解决方案:
String splitMe = "...sinking will be 44% successful...";
String strPercents = splitMe.split(" ")[3];
System.out.println(strPercents);//test output
否则:良好的正则表达式的ressource http://www.vogella.com/articles/JavaRegularExpressions/article.html#examples
谢谢托马斯。但我认为这不会起作用(是吧?),因为这只是我感兴趣的部分。在此之前和之后有很多其他的东西,因此... – Ray
只要你知道文本将始终以“下沉会”开始, a%将永远在那里这将工作,无论周围的文字
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);
只有两个选项,stringtokenize/split(或)表达式。你需要选择其中之一。 – kosa