我正在尝试使用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标准库中的某些东西来解析数字和运算符的字符串。我试图避免一次检查一个字符串。
该字符串可能包含一个包含许多数字和运算符的长表达式,我需要提取所有这些数字和运算符。因此,我无法用空格替换所有运算符,例如。
答案 0 :(得分:1)
使用匹配器代替扫描仪:
Matcher m = number_pattern.matcher(test2);
while(m.find()) {
System.out.println(m.group(0));
}