Java:replacestring(括号!)

我目前正在研究一个小程序:

  • 读取Excel文档(.xlsx,使用SmartXLS)并将内容保存为一个长string(每个单元格的新行)
  • 读取configuration文件,然后转换长string中的子string(replaceAll)和/或添加前缀,根据configuration文件中的示例
  • 将最终的String输出到一个txt文件中

转换示例:abc(每个部分之间都有一个制表符),例如“its [] bracket” – >“itsabracket”与

tagname [ ] a 

在configuration文件(“[]”被replace为“a”)。 a是告诉我哪些列转换的标签,b是原始子string,c是必须转换成的stringb。

问题是:我已经知道括号(圆形,curl和方形)将被用于configuration文件,但我不知道,如果它只是一个单一的或甚至更长的短语(字母,数字,..)在括号之间。

 String s = s.replaceAll(convert[i].original, convert[i].new); 

对于“[]” – >“a”将[a]写入输出文件,如果我首先执行以下操作,当读取configuration文件并将所有内容保存到“convert”数组中时,将抛出PatternSyntaxException(“Unclosed类接近索引0“):

 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]”。

任何想法,我怎么能做到这一点?

使用String.replace它接受字符序列不像replaceAll.You不必为[]等使用转义字符

  String s = s.replace(convert[i].original, convert[i].new); 

input
其[] []]托架
标记名[] a

产量

itsaa]托架

希望这是你想用你的代码实现的。