【发布时间】:2014-12-29 13:13:51
【问题描述】:
我是 Java 新手。有一个字符串“a + b - c * d / e”,我想得到a ,b,c,d,e
但它失败了(java.util.regex.PatternSyntaxException)
String str = "a + b - c * d / e";
String [] value = str.split("+-*/");
提前致谢。
【问题讨论】:
我是 Java 新手。有一个字符串“a + b - c * d / e”,我想得到a ,b,c,d,e
但它失败了(java.util.regex.PatternSyntaxException)
String str = "a + b - c * d / e";
String [] value = str.split("+-*/");
提前致谢。
【问题讨论】:
根据以下正则表达式拆分您的输入。
String str = "a + b - c * d / e";
String[] value = str.split("\\s*[-+*/]\\s*");
System.out.println(Arrays.toString(value));
输出:
[a, b, c, d, e]
\\s* 匹配零个或多个空格。 [-+*/] 匹配给定列表中的单个字符。我建议您将- 放在字符类的开头或结尾,因为- 在字符类的中间有时会起到范围运算符的作用。
更新:
如果您希望程序仅返回运算符,请尝试此操作。
String str = "1.23 + 3 - 5 * 4 / 5.7";
String[] value = str.split("\\s*\\d+(?:\\.\\d+)?\\s*");
ArrayList<String> list = new ArrayList<String>();
for(String s: value){
if(!s.equals("")) list.add(s);
}
System.out.println(list);
输出:
[+, -, *, /]
【讨论】:
[1.23, 3, 5, 4, 5.7]