是Java / coding的新手,请您尝试掌握它,因此在此先感谢您的帮助!
我使用一组运算符作为分隔符分割了这个字符串“ s”。
String[] workableParts = s.split("(?<=[-+*/%^=])|(?=[-+*/%^=])");
我将每个分隔符存储在workableParts数组中,同时也将定界符存储为数组的一部分-例如,输入7 + 7将存储为:
workableParts[0]="7"
workableParts[1]="+"
workableParts[2]="7"
我也在其他地方使用此运算符数组:
private String[] ops = {"-","+","*","/","%","^","="};
有没有一种方法可以用来替换上面拆分中的文本,但保持相同的效果?这样的想法是,如果以后添加运算符,只需要在一个地方更新它们即可。
非常感谢,
山姆
一种可能的选择是使用Arrays.toString(ops);
将字符串数组转换为字符串,然后在正则表达式中使用它。这将返回格式为[-,+,*,/,...]
的字符串。
现在,您可以将,
替换为空字符串""
,并在正则表达式中使用子字符串。
private String[] ops = {"-","+","*","/","%","^","="};
String joinedOps = Arrays.toString(strArray);
joinedOps = joinedOps.substring(1, str.length()-1).replace(",", "");
String regex = "...."+joinedOps+"...";
您可以做这样的事情。定义您自己的split方法并在其中构建正则表达式。当您更改ops数组时,将修改正则表达式。
注意:您在放置操作时必须谨慎,以免它们构造意外的字符类。例如。 -
应该在最前面,^
绝对不能在前面。
static String[] ops = { "-", "+", "*", "/", "%", "^", "=" };
public static void main(String[] args) {
String s = "7+7-8^2";
String[] workableParts = opSplit(s);
System.out.println(Arrays.toString(workableParts));
}
打印
[7, +, 7, -, 8, ^, 2]
方法
public static String[] opSplit(String s) {
String op = String.join("", ops);
String regex = "(?<=[" + op + "])|(?=[" + op + "])";
return s.split(regex);
}