我所拥有的是一个字符串数组,我正在从我正在阅读的.csv文件中创建。然后我想解析我将用于'字符的值并用\替换它',因为我将其输出到javascript文件。
以下是我正在使用的代码:
while ((thisLine = myInput.readLine()) != null) {
String[] line = thisLine.split("\t");
if(line[4].indexOf("'") > -1){
System.out.println(line[4]);
line[4] = line[4].replace("'", "\'");
System.out.println(line[4]);
}
brand.add(line[4]);
}
然而这不起作用。在我进行替换后,我得到了相同的字符串。
这是因为字符串数组有问题吗?
我感谢你在这件事上提供任何帮助。
答案 0 :(得分:9)
试试这样:
line[4] = line[4].replace("'", "\\'");
反斜杠必须“转义”。
如果line[4] = line[4].replace("'", "\'");
,则\'
部分转换为'
答案 1 :(得分:6)
"'"
与"\'"
相同,这是违背的事实。它们是相同的字符串(单个字符,只是一个撇号) - 转义是允许字符字面为'\''
。
你想:
line[4] = line[4].replace("'", "\\'");
所以现在你正在逃避反斜杠,而不是撇号。所以你用反斜杠替换撇号 - 然后撇号,这就是你想要的。
有关字符和字符串文字中转义的详细信息,请参阅JLS section 3.10.6。
答案 2 :(得分:1)
你应该添加斜杠\类似这样的东西
line[4] = line[4].replace("'", "\\'");
因为一个左斜线\是转义字符
答案 3 :(得分:0)
您的问题看起来像是一个逃避问题。尝试\\替换单个反斜杠。