JSP:
<% final String data = "some test with ' single quotes"; %>
<script>
var str = '<%= data %>';
<script>
结果是(JavaScript):
var str = 'some test with ' single quotes';
未捕获的 SyntaxError:意外的标识符
如何替换这个单引号\'
以避免 JavaScript 错误?
JSP:
<% final String data = "some test with ' single quotes"; %>
<script>
var str = '<%= data %>';
<script>
结果是(JavaScript):
var str = 'some test with ' single quotes';
未捕获的 SyntaxError:意外的标识符
如何替换这个单引号\'
以避免 JavaScript 错误?
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!\"
请记住,您还需要对双引号、新行、制表符和许多其他内容进行编码。一种方法是使用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);
}
}
输入.txt
这是一些我想为 JavaScript “转义”的“文本”。我将在这里尝试几个特殊字符:\"
输出
下面是一些 \"Text\",\r\n我\希望对 JavaScript 进行 \"转义\"。\r\n我将在这里尝试几个特殊字符:\ \"
您是否希望简单地双重转义您的字符串,以便您实际上有 a\
后跟 a '
?
<% final String data = "some name with \\' single quote"; %>
从您的 JavaScript 代码中,您可以使用字符串替换功能:
var str2 = str1.replace("'","\\'");