.replace()在嵌入式javascript中不起作用

时间:2018-10-25 05:06:14

标签: javascript html node.js replace ejs

当我尝试运行以下代码时,它不会将&lt,&gt,&#34替换为等效的字符

<% if(typeof myTable !== 'undefined'){ %>
        <% myTable = myTable.replace('&lt','<').replace('&gt', '>').replace('&#34', '"') %>
        <script>
            localStorage['text'] += "<%= myTable %>";
        </script>
        <% myTable = undefined; %>
<% } %>

当我检查被ejs的plceholder标记替换的myTable的值时,它仍然具有原始格式的这些字符。

myTable = "&lt;table class=&#34;table table-bordered table-hover&#34;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class=&#34;col&#34;&gt;&lt;p contenteditable=&#34;true&#34;&gt;Head&lt;/p&gt;&lt;/th&gt;&lt;th class=&#34;col&#34;&gt;&lt;p contenteditable=&#34;true&#34;&gt;Head&lt;/p&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;"

我该怎么办?

2 个答案:

答案 0 :(得分:2)

我会尝试存储替换后的字符串的值

<% myTable = myTable.replace('&lt','<').replace('&gt', '>').replace('&#34', '"') %>

否则它就丢失了。

docs

  

replace()方法在字符串中搜索指定值或正则表达式,并返回新字符串,其中替换了指定值。

如果这不起作用,请尝试使用未经转义的蜂st版本:"<%- myTable %>";(而不是"<%= myTable %>";)。

答案 1 :(得分:1)

您应该注意到 g 标志,并使用 myTable = myTable.replace 而不是 myTable.replace

因为replace方法不会更改源字符串,请参见:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace

请尝试以下代码:

var myTable = "&lt;table class=&#34;table table-bordered table-hover&#34;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class=&#34;col&#34;&gt;&lt;p contenteditable=&#34;true&#34;&gt;Head&lt;/p&gt;&lt;/th&gt;&lt;th class=&#34;col&#34;&gt;&lt;p contenteditable=&#34;true&#34;&gt;Head&lt;/p&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;"
myTable = myTable.replace(/&lt;/g,'<').replace(/&gt;/g, '>').replace(/&#34;/g, '"');

console.log(myTable);