我可以在 split() 中使用字符串数组来说明分隔符吗?



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);
}

相关内容

  • 没有找到相关文章

最新更新