Java/编码新手,并试图掌握它,所以提前感谢您的帮助!
我有这个字符串"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+"...";
你可以做这样的事情。 定义你自己的拆分方法,并在其中构建正则表达式。 当您更改 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);
}