我正在尝试提取字符串“ equation”中变量的字母。 然后将其保存到一个名为变量的String数组中。 但是,当我打印变量数组时,它充满了“空容器”
如何做到这一点,以使String []变量容器中没有空格?
String equation = "(a+2)/3*b-(28-c)";
String[] variables = equation.split("[+-/*0-9()]");
for(int i = 0 ; i < variables.length; ++i)
{
System.out.println(variables[i]);
}
答案 0 :(得分:0)
鉴于您的方程式可能包含嵌套内容,因此单个正则表达式解决方案可能不是最佳选择。相反,我建议使用模式匹配器,然后扫描整个方程以查找字母变量:
String equation = "(a+2)/3*b-(28-c)";
String pattern = "[A-Za-z]+";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(equation);
while (m.find()) {
System.out.println("Found a variable: " + m.group(0));
}
Found a variable: a
Found a variable: b
Found a variable: c
注意:此解决方案假定您仅想要变量名本身,并且您不关心前缀或系数之类的东西。
答案 1 :(得分:0)
首先用空字符串替换所有与[+*-\\/0-9)(]
匹配的非可变字符,然后将其更改为char数组,尝试这个
String equation="(a+2)/3*b-(28-c)";
char[] variables= equation.replaceAll("[+*-\\/0-9)(]","").toCharArray();
for(int i = 0 ; i < variables.length; ++i)
{
System.out.println(variables[i]);
}