JSP:
<% final String data = "some test with ' single quotes"; %>
<script>
var str = '<%= data %>';
<script>
结果是(JavaScript):
var str = 'some test with ' single quotes';
未捕获的SyntaxError:意外的标识符
如何使用\'
替换此单引号以避免JavaScript错误?
答案 0 :(得分:6)
使用Apache Commons Lang软件包中的escapeEcmaScript
方法:
将找到的任何值转义为其EcmaScript字符串形式。交易 正确使用引号和控制字符(制表符,反斜杠,cr,ff等)。 因此,标签变为字符
'\\'
和't'
。Java字符串和EcmaScript字符串之间的唯一区别是 在EcmaScript中,单引号和正斜杠(
/
)被转义。
示例:
input string: He didn't say, "Stop!"
output string: He didn\'t say, \"Stop!\"
答案 1 :(得分:1)
请记住,您还需要对双引号,新行,制表符和许多其他内容进行编码。一种方法是使用org.apache.commons.lang.StringEscapeUtils
public class JavaScriptEscapeTest {
public static void main(String[] args) throws Exception {
String str = FileUtils.readFileToString(new File("input.txt"));
String results = StringEscapeUtils.escapeEcmaScript(str);
System.out.println(results);
}
}
input.txt中
这是一些“文字” 我想为JavaScript“逃脱”。 我会在这里尝试几个特殊字符:\“
输出
这里有一些\“Text \”,\ r \ n我想为JavaScript“转义”。\ r \ n我会在这里尝试几个特殊字符:\ \“
答案 2 :(得分:-2)
您是否希望简单地双重转义字符串,以便实际拥有\
后跟'
?
<% final String data = "some name with \\' single quote"; %>
从您的JavaScript代码中,您可以使用string replace功能:
var str2 = str1.replace("'","\\'");