转义字符串中的单引号

Vit*_*huk 6 javascript java

JSP:

<% final String data = "some test with ' single quotes"; %>
<script>
    var str = '<%= data %>';
<script>
Run Code Online (Sandbox Code Playgroud)

结果是(JavaScript):

var str = 'some test with ' single quotes';
Run Code Online (Sandbox Code Playgroud)

Uncaught SyntaxError:意外的标识符

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

Vis*_*ioN 6

使用escapeEcmaScriptApache Commons Lang包的方法:

将找到的任何值转义为其EcmaScript字符串形式.正确处理引号和控制字符(制表符,反斜杠,cr,ff等).因此选项卡成为角色'\\''t'.

Java字符串和EcmaScript字符串之间的唯一区别在于,在EcmaScript中,单引号和forward-slash(/)被转义.

例:

input string: He didn't say, "Stop!"

output string: He didn\'t say, \"Stop!\"

  • 绝对是一种矫枉过正,因为它还将任何非拉丁字母符号转换为其unicode序列("кириллица"` - >`"\\ u043A \\ u0438 \\ u0440 \\ u0438 \\ u043B \\ u043B \\ u0438\\ u0446 \\ u0430" `). (4认同)