我写了一个查找替换的程序,用两个JTextField来获取要查找和替换的字符串。问题是,如果输入的字符串中有“\”,则用getText()得到的字符串是"\\"。比如,输入“\r\n”,得到的是“\\r\\n”。但把这些字符串用于正则表达式时,查找和替换的是反斜杠加n,而非换行符。
我的一个解决办法是在使用之前用replace("\\r","\r"),但这种方式很丑,而且不能一次性处理所有相类似的情况,不知道有没有人能够给出理想的解决方法。
我的一个解决办法是在使用之前用replace("\\r","\r"),但这种方式很丑,而且不能一次性处理所有相类似的情况,不知道有没有人能够给出理想的解决方法。
这个好像通用一些了吧
那会有什么问题呢?你说一下,我可以帮你一起想啊。这语法不熟悉,但算法也可以帮你想的啊。
是不是刚才那样就会变成\后面一个字母。
replace("\\","\")+后一个字母;这样再组成一个字符,可以吗?
转义符是给编译器处理用的,不是让你自己用的
表示为String就是"\r\n",不等于你自己输入\r\n就是换行,不要弄混了
这不就好了,把两个反斜杠换成一个
回复七楼:不对,如果照你那样输入,getText的结果是\\\\\\\\r\\\\\\\\n
回复八楼:getText后取得的是“\\r”,而非“\\\\r”,怎么替换?
你试一下就知道了,\\\\代表2个斜杠
试试这个
replaceAll("\\\\[nr]", System.getProperty("line.separator"));
要用replaceAll,replace不行
String[] ls={"\\r","\\n","\\t","\\b","\\f"};
String[] rs={"\r","\n","\t","\b","\f"}; for(int i=0;i<ls.length;i++){
res=res.replace(ls[i], rs[i]);
}