0
因此,我正在尝试通过在评估字符串之前先读取一个字符串来制作ScriptEngineManager
的engine.eval()
的自定义变体。我想将表达式3(4)转换成3 *(4)因此engine.eval()
可以读取它。所以,我尝试使用这种方法:替换表达式时带括号的未封闭组错误
String string = 3(4);
String[] numbers = string.split("\\)|\\*|/|\\+|-");
if (numbers[i].contains("(")) {
val = numbers[i].split("\\(");
if (val[0].equals("")) {
val[0] = "1";
}
String replace = val[0] + "*(" + val[1];
string = string.replaceFirst(numbers[i], replace);
}
然而,当我运行它,我得到的错误“未闭合组附近指数3” “3(4”这是我调试,以发现这一行string = string.replaceFirst(numbers[i], replace);
是造成这个问题的原因之一,或者我需要做别的事情,或者我只是不明白错误,因为我不明白我做错了什么,因为我的愿望是取代第一个例子3(4字符串3(4)与3 *(4。我不想关闭像3( 4-x)将导致错误3 *(4)-x)。
谢谢您的时间,有一个美好的一天:3
谢谢!我还是新来的正则表达式库,所以错过这并不意外,即使我认为我正在使用'replaceFirst(oldChar,newChar) '为了它,还是没有使用,因为我使用的变量? –
如果你的表达确实不包含特殊字符,如果您引用或不引用,则无关紧要。 – agad