2013-03-10 134 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