我有一個很長的字符串,我想解析並檢索一個值。 我正在考慮使用模式,但在這方面我有點生疏。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