转义字符串中的单引号

时间:2013-03-22 16:27:44

标签: java 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错误?

3 个答案:

答案 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("'","\\'");