java中的反斜杠

时间:2012-08-05 14:32:37

标签: java android

我遇到了保存在数据库中的字符串的问题,例如:"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"

如何解决一个反斜杠的问题?

我想传递这个字符串来执行一个分割数字的过程,而反斜杠就是分隔符,但是这个问题阻止了我这样做。

4 个答案:

答案 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