2

我对保存在数据库中的字符串有疑问,例如:"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

4 回答 4

3

数据库中的数据是可以的,你不需要替换任何东西。直接用 Java 代码编写的字符串字面量必须用另一个反斜杠转义它们的反斜杠:

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
于 2012-08-05T14:37:49.070 回答
2

在 java 字符串中,反斜杠字符是控制字符。如果您希望在字符串中包含文字反斜杠,则必须使用另一个反斜杠对其进行转义。例如"\\"

于 2012-08-05T14:36:22.070 回答
2

在java中,反斜杠\有特殊的含义。为了删除它,用另一个反斜杠转义它\\

尝试这个:

s.replaceAll("\\", "\\\\");
于 2012-08-05T14:38:40.843 回答
0

您也可以使用 Unicode \ = \u005c

示例:“文件夹\u005cSubfolder1\u005cSubfolder2”

将产生字符串“Folder\Subfolder1\Subfolder2”

你可以在这里看到完整的表格:http: //jrgraphix.net/r/Unicode/0020-007F

于 2012-08-05T14:51:54.500 回答