从任何字符串中获取一个数字

时间:2013-11-21 23:58:03

标签: java string math

好的,我们假设我有字符串7 + 8 = 15,我希望能够得到第二个数字,在这种情况下为8,用于字符串。我还希望能够对任何字符串执行此操作,例如64 - 29 = 3512 * 12 = 144

然而,有一些限制。我不能使用数组,try / catch,SystemTokenizer或regex。

我尝试过使用.substring,但这似乎只能有一个设置位置,所以我不知所措。

String str = "7 + 8 = 15";

    int whiteSpace1 = str.indexOf(" ");
    int first = Integer.parseInt(str.substring(0, whiteSpace1));

我知道这会给我第一个数字,但是,我不知道如何获得第二个数字以便计算它们,以便我可以在=

之后检查数学与答案。

不,数字之间的空格并不总是存在。

(我知道这很奇怪,但出于某种原因,我的CS老师介绍似乎认为这是一个很棒的任务)

3 个答案:

答案 0 :(得分:1)

如果字符串是:

String str1 = "64-29=35"; //no space before = and after -

System.out.println(str1.substring(str1.indexOf("-")+1, str1.indexOf("=")));

<强>输出:

29

如果字符串是:

String str1 = "64 - 29 = 35";//with spaces

System.out.println(str1.substring(str1.indexOf("-")+2, str1.indexOf("=")-1));

答案 1 :(得分:1)

如果操作员的每一侧都有空格并且等号,则可以执行类似

的操作
String s = "7 + 5 = 12";
s = s.substring(0, s.indexOf("=")).trim();
int number = Integer.parseInt(s.substring(s.lastIndexOf(" ") + 1))

无论经营者如何,上述都应该有效。

如果没有空格,则必须循环遍历每个字符以查找第一个非整数字符并开始构建编号。或者,您可以为每个运算符编写单独的代码,以避免循环。

答案 2 :(得分:0)

您可以使用正则表达式执行此操作。

s.split("[-+=*]")[1]

split函数使用正则表达式来标识所有匹配项,并使用每个正则表达式字符作为分隔符进行相应的拆分。它返回所有分隔值的String数组。你需要数组中的第二个值。

只需在[]中添加字符串中第一个和第二个数字之间可能遇到的操作数。