11

How to remove //<![CDATA[ and end //]]> with javascript from string?

var title = "<![CDATA[A Survey of Applications of Identity-Based Cryptography in Mobile Ad-Hoc Networks]]>" ;

needs to become

var title = "A Survey of Applications of Identity-Based Cryptography in Mobile Ad-Hoc Networks";

How to do that?

4

5 回答 5

26

您可以使用该String.prototype.replace方法,例如:

title = title.replace("<![CDATA[", "").replace("]]>", "");

这将用任何内容替换每个目标子字符串。请注意,这只会替换每个的第一次出现,如果要删除所有匹配项,则需要正则表达式。

参考:

于 2012-06-07T15:22:43.013 回答
1

你应该能够用正则表达式来做到这一点。也许是这样的?:

var myString = "<![CDATA[A Survey of Applications of Identity-Based Cryptography in Mobile Ad-Hoc Networks]]>";
var myRegexp = /<!\[CDATA\[(.*)]]>/;
var match = myRegexp.exec(myString);
alert(match[1]);
于 2012-06-07T15:26:37.363 回答
1

我建议使用这种更广泛的方法来删除前导和尾随 CDATA 内容:

title.trim().replace(/^(\/\/\s*)?<!\[CDATA\[|(\/\/\s*)?\]\]>$/g, '')

如果 CDATA 页眉和页脚被注释,它也将起作用。

于 2019-10-15T15:00:01.923 回答
0

您必须执行与最初对字符串执行的操作相反的操作以对其进行编码,即:-

mystr='<!CDATA[' + mystr.replaceAll(']]>',']]]]><![CDATA[>') + ']]>'

此页面上建议“替换”而不使用循环的所有其他答案都是错误的。

于 2021-08-30T06:48:50.687 回答
0

正则表达式/^(<!\[CDATA\[)|(]]>)$/gm对我有用,没有循环。

于 2021-12-09T17:35:20.183 回答