我做的一个小程序,可以批量的重命名文件。
在替换指定字符时,出现一些问题,特来向大家求助!
语句为:result = now.replaceAll(before, after);但是,当文件名中包括 .$^+(){}[] 这些符号时,都会出现问题。其中$会在替换结果再加一个替换结果,^会在开头加一个。
比如,hello$everyone 替换$为X的结果是 helloXeveryoneX其他的会在每两个字符间加上替换结果! hi+ok 替换+为X 会得到 XhXiX+XoXkX这太让人疯狂了!谁能给个解决办法呀实在是不想先转义再替换再转义这样
在替换指定字符时,出现一些问题,特来向大家求助!
语句为:result = now.replaceAll(before, after);但是,当文件名中包括 .$^+(){}[] 这些符号时,都会出现问题。其中$会在替换结果再加一个替换结果,^会在开头加一个。
比如,hello$everyone 替换$为X的结果是 helloXeveryoneX其他的会在每两个字符间加上替换结果! hi+ok 替换+为X 会得到 XhXiX+XoXkX这太让人疯狂了!谁能给个解决办法呀实在是不想先转义再替换再转义这样
result = now.replace(before, after); // 这个就是普通的替换
有没有更好的办法?
文件较少这样是无所谓的,但是多的话,比如1000个,速度慢几倍,有些难以接受了。除非replace函数可以告诉我,找到了没有,可惜它不肯。只能用contains()了,这个也是正则表达式吗?
每做一次替换都会去创建一个 Pattern 对象,用完后就扔掉了。至于为什么多次替换用 Pattern 呢,可以去看一下 java.lang.String#replaceAll 和 replace 两个方法的实现你就明白了。至于其他的,由于我不知道你具体要做什么,有什么要求,也没有办法回复了。