解析没有空格的数学表达式

时间:2015-07-14 21:06:55

标签: java

我正在尝试使用Scanner来解析数字和运算符的字符串。如果每个令牌都被一个空格分隔,我就能使用它,但如果没有空格,Scanner似乎不起作用。这个例子说明了我的问题:

        final Pattern number_pattern = Pattern.compile("-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)");
        String test1 = "5 + 6";
        String test2 = "5+6";
        Scanner sc1 = new Scanner(test1);
        Scanner sc2 = new Scanner(test2);
        boolean found1 = sc1.hasNext(number_pattern); // true
        boolean found2 = sc2.hasNext(number_pattern); // false

我正在寻找一种简单的方法,最好使用Java标准库中的某些东西来解析数字和运算符的字符串。我试图避免一次检查一个字符串。

该字符串可能包含一个包含许多数字和运算符的长表达式,我需要提取所有这些数字和运算符。因此,我无法用空格替换所有运算符,例如。

1 个答案:

答案 0 :(得分:1)

使用匹配器代替扫描仪:

Matcher m = number_pattern.matcher(test2);
while(m.find()) {
    System.out.println(m.group(0));
}