2013-03-10 163 views
2

我想從我的字符串中獲取整數值。以下是我的例子。Java從字符串獲取整數值

String strScore = "Your score is 10. Probability in the next 2 years is 40%"; 

但我只想得到10分。我該怎麼做?

更新:

String firstNumber = strScore.replaceFirst(".*?(\\d+).*", "$1"); 

bfLog.createEntry(firstNumber); 

我這個保存到SQLite數據庫。

+0

'子()'和'的indexOf()'? – 2013-03-10 17:49:55

+0

這個字符串是靜態的嗎? IE瀏覽器。它總是以這種格式? – 2013-03-10 17:50:39

+0

添加到Eng.Found - 如果您告訴我們它是什麼,可能是邏輯的正則表達式。 – 2013-03-10 17:50:50

回答

10

可以使用String正則表達式的一個replace方法捕捉到第一個數字在captured group

String firstNumber = strScore.replaceFirst(".*?(\\d+).*", "$1"); 
  • .*?消耗最初的非數字(非貪婪)
  • (\\d+)獲取組中的一個或多個可用數字!
  • .*其他一切(貪婪)。
+0

你能解釋一下你提供的代碼嗎?因爲我想了解這是如何工作的。謝謝。 – 2013-03-10 17:53:16

+0

好吧,但它仍然會得到下一個字符? – 2013-03-10 18:00:44

+0

它匹配其餘字符,以便它「知道」最初的數字在哪裏 – Reimeus 2013-03-10 18:01:46

3

這取決於您的字符串中是否有其他內容可以更改。

如果它總是除了數相同,則可以使用

int score = Integer.parseInt(strScore.substring(14,16)) 

,因爲數字「10」是在指數14和串15。 如果你的字串其他的東西改變,你應該使用正則表達式:

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html

+0

嗯,如果得分只有7呢? – 2013-03-10 17:50:33

+0

這樣可以,因爲之後會忽略一個空格。 – 2013-03-10 17:52:18

+1

以及我仍然不同意,你不能確定整數少於兩位數 – anvarik 2013-03-10 17:53:52

1

你可以試試這個:

String strScore = "Your score is 10. Probability in the next 2 years is 40%"; 
String intIndex = strScore.valueOf(10); 
String intIndex = 10 // Result