字符串中的转义单引号

Escape single quotes in a string

本文关键字:单引号 转义 字符串      更新时间:2023-09-26

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);
    }
}

input.txt

这是一些"文本"我希望被JavaScript"转义"。我将在这里尝试几个特殊字符:''">

输出

这里有一些"文本",我想成为JavaScript的"转义符"。''''r''n我将在这里尝试几个特殊字符:''''">

您是否希望简单地对字符串进行双转义,这样实际上就有了一个'和一个'

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

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

var str2 = str1.replace("'","'''");