如果我有:
Scanner input = new Scanner(System.in);
System.out.println("Enter an infixed expression:");
String expression = input.nextLine();
String[] tokens;如何从左到右一次扫描空格周围的中缀表达式,并将其放入字符串数组?在这里,token被定义为操作数、运算符或括号符号。
示例:"3 + (9-2)“==>令牌= 3(-)
发布于 2013-04-30 02:39:25
String test = "13 + (9-2)";
List<String> allMatches = new ArrayList<String>();
Matcher m = Pattern.compile("\\d+|\\(|\\)|\\+|\\*|-|/")
.matcher(test);
while (m.find()) {
allMatches.add(m.group());
}有人能测试一下这个吗?
发布于 2013-04-30 02:37:37
我认为最简单的方法是将行读入一个字符串,然后根据空格进行拆分。有一个很方便的字符串函数split可以帮您完成这项工作。
String[] tokens = input.split("");发布于 2013-04-30 03:45:51
对于您的示例来说,这可能有点过头了,但是如果它变得更加复杂,请看一下JavaCC,Java Compiler Compiler。JavaCC允许您基于语法定义在Java语言中创建解析器。
请注意,它不是一个容易上手的工具。然而,语法定义将比相应的正则表达式更容易阅读。
https://stackoverflow.com/questions/16285774
复制相似问题