【问题标题】:Java get integer value from stringJava从字符串中获取整数值
【发布时间】:2013-03-10 17:46:49
【问题描述】:

我想从我的字符串中获取整数值。下面是我的例子。

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 数据库。

【问题讨论】:

  • substring()indexOf()?
  • 这个字符串是静态的吗? IE。一直都是这种格式吗?
  • 添加到 Eng.Found - 可能是一个带有逻辑的正则表达式,如果你告诉我们它是什么。
  • 嗯,这里唯一改变的是分数。假设分数是 26。下一个分数是 7。
  • 嗯然后解析到点,得到第一部分,然后根据空格再解析得到最后一个

标签: java string integer


【解决方案1】:

您可以使用String 正则表达式replace 方法之一来捕获captured group 中的第一个数字:

String firstNumber = strScore.replaceFirst(".*?(\\d+).*", "$1");
  • .*? 消耗初始非数字(非贪婪)
  • (\\d+) 获取组中的一个或多个可用数字!
  • .* 其他一切(贪婪)。

【讨论】:

  • 你能解释一下你提供的代码吗?因为我想了解这是如何工作的。谢谢。
  • 好的,但它仍然可以获取下一个字符?
  • 它匹配剩余的字符,以便它“知道”初始数字的位置
  • Strings 是不可变的。您使用的是新创建的firstNumber Sting 而不是strScore
  • 看不出你怎么能得到它。如果您想将代码添加到问题中...
【解决方案2】:

这取决于您的字符串中是否有任何其他内容可以更改。

如果除了数字之外总是相同的,你可以使用

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

【讨论】:

  • 嗯,如果分数只有7呢?
  • 没关系,因为之后会忽略空格。
  • 好吧,我还是不同意,你不能确定整数少于两位数
【解决方案3】:

你可以试试这个:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 2014-07-24
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多