日期:2014-05-20  浏览次数:20622 次

String中替换特殊字符的问题
我做的一个小程序,可以批量的重命名文件。
在替换指定字符时,出现一些问题,特来向大家求助!
  语句为:result = now.replaceAll(before, after);

但是,当文件名中包括 .$^+(){}[] 这些符号时,都会出现问题。

其中$会在替换结果再加一个替换结果,^会在开头加一个。
比如,hello$everyone 替换$为X的结果是 helloXeveryoneX

其他的会在每两个字符间加上替换结果! hi+ok 替换+为X 会得到 XhXiX+XoXkX

这太让人疯狂了!谁能给个解决办法呀。。。实在是不想先转义再替换再转义这样。。。

------解决方案--------------------
replace不就行了,不要用All
------解决方案--------------------
如果你使用一种模式进行批量替换的话,建议使用 Pattern 类创建一个正则表达式,如果你使用 replaceAll 的话,
每做一次替换都会去创建一个 Pattern 对象,用完后就扔掉了。

至于为什么多次替换用 Pattern 呢,可以去看一下 java.lang.String#replaceAll 和 replace 两个方法的实现你就明白了。

至于其他的,由于我不知道你具体要做什么,有什么要求,也没有办法回复了。