Java:替换字符串(带括号!)

时间:2015-07-27 11:39:10

标签: java string excel

我目前正在制作一个小程序:

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

转换的例子: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]"试。

任何想法,我如何才能使这项工作?

1 个答案:

答案 0 :(得分:2)

使用String.replace它接受与replaceAll不同的字符序列。您不必为[]等使用转义字符。

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

<强>输入
其[] []]托架
tagname [] a

<强>输出

itsaa]支架

希望这是您希望使用代码实现的目标。

相关问题