6

JSP:

<% final String data = "some test with ' single quotes"; %>
<script>
    var str = '<%= data %>';
<script>

结果是(JavaScript):

var str = 'some test with ' single quotes';

未捕获的 SyntaxError:意外的标识符

如何替换这个单引号\'以避免 JavaScript 错误?

4

3 回答 3

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!\"

于 2013-03-22T16:38:50.257 回答
3

请记住,您还需要对双引号、新行、制表符和许多其他内容进行编码。一种方法是使用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我将在这里尝试几个特殊字符:\ \"

于 2013-03-22T16:39:07.623 回答
-1

您是否希望简单地双重转义您的字符串,以便您实际上有 a\后跟 a '

<% final String data = "some name with \\' single quote"; %>

从您的 JavaScript 代码中,您可以使用字符串替换功能:

var str2 = str1.replace("'","\\'"); 
于 2013-03-22T16:29:36.300 回答