我遇到了保存在数据库中的字符串的问题,例如:"311\315_316\336_337"
。它们只有一个反斜杠,这是java中的一个问题。当我尝试s.replaceAll("\", "\\")
时它不起作用,因为java编译器将字符串"311\315_316\336_337"
读为"311Í_316Þ_337"
。
我也尝试对编码"311%C3%8D_316%C3%9E_337"
的结果进行编码和解码,但解码结果仍为"311Í_316Þ_337"
?
如何解决一个反斜杠的问题?
我想传递这个字符串来执行一个分割数字的过程,而反斜杠就是分隔符,但是这个问题阻止了我这样做。
答案 0 :(得分:3)
数据库中的数据没问题,您无需替换任何内容。直接在Java代码中编写的String literals 必须使用反斜杠转义另一个反斜杠:
String s = "311\\315_316\\336_337";
System.out.println(s); // prints 311\315_316\336_337
但是如果从数据库中获取这些值,则无需执行任何操作:
String s = resultSet.getString(1);
System.out.println(s); // should print 311\315_316\336_337
答案 1 :(得分:2)
在java字符串中,反斜杠字符是控制字符。如果您希望在字符串中包含文字反斜杠,则必须使用另一个反斜杠对其进行转义。例如"\\"
答案 2 :(得分:2)
在java中,反斜杠\
具有特殊含义。要删除它,请使用另一个反斜杠\\
试试这个:
s.replaceAll("\\", "\\\\");
答案 3 :(得分:0)
您也可以使用Unicode \ = \ u005c
示例:“Folder \ u005cSubfolder1 \ u005cSubfolder2”
会导致字符串“Folder \ Subfolder1 \ Subfolder2”
您可以在此处查看完整表格:http://jrgraphix.net/r/Unicode/0020-007F