我有这个代码删除第一个关闭')'来自输入字符串:
if (campo.indexOf(")") >= 0){
campo = campo.replaceFirst(")", "");
}
在运行时,我收到此错误
无与伦比的结束')'
替换有什么问题?我查了一下')'甚至在尝试更换之前。
答案 0 :(得分:4)
以这种方式尝试:
if (campo.indexOf(")") >= 0){
campo = campo.replaceFirst("\\)", "");
}
)
是regex中的保留字符 - 而replaceFirst将Regex作为第一个参数。
查看Pattern in JavaDoc以查看所有特殊字符
并且 - 正如评论中指出的那样 - 不需要检查。你可以简单地做
campo = campo.replaceFirst("\\)", "");
如果首先没有)
- 则不会发生替换。
答案 1 :(得分:3)
您应该粘贴完整的堆栈跟踪...
无论如何,问题在于这一行:
campo = campo.replaceFirst(")", "");
.replaceFirst()的第一个参数是一个字符串文字,它被解释为一个正则表达式,而关闭的paren在正则表达式中是特殊的。
你需要逃脱它:
campo = campo.replaceFirst("\\)", "");