我目前正在制作一个小程序:
转换的例子:a b c(每个部分之间有一个标签),例如: "其[]括号" - > " itsabracket"与
tagname [ ] a
配置文件中的(" []"替换为" a")。 a是告诉我的标签,转换的是哪些列,b是原始子字符串,c是必须转换为字符串b。
问题是:我已经知道在配置文件中将使用括号(圆形,卷曲和方形),但我不知道,如果它只是一个或者甚至更长的短语(带字母,数字,......)在括号之间。
String s = s.replaceAll(convert[i].original, convert[i].new);
for" []" - > ""将[a]写入输出文件,如果我先执行以下操作,那么当它读取配置文件并将所有内容保存在" convert"数组,它抛出一个PatternSyntaxException("索引0和#34附近的未闭合字符类):
if(ss.contains("[")) {
ss = ss.replaceAll("[", "\\[");
} else if(ss.contains("]")) {
ss = s.replaceAll("]", "\\]");
}
使用
if(ss.contains("\\[")) {
ss = ss.replaceAll("\\[", "\\\\[");
} else if(ss.contains("\\]")) {
ss = s.replaceAll("\\]", "\\\\]");
}
它输出" [a]"试。
任何想法,我如何才能使这项工作?
答案 0 :(得分:2)
使用String.replace它接受与replaceAll不同的字符序列。您不必为[]等使用转义字符。
String s = s.replace(convert[i].original, convert[i].new);
<强>输入强>
其[] []]托架
tagname [] a
<强>输出强>
itsaa]支架
希望这是您希望使用代码实现的目标。