我的问题如下:
我有一个带有文件路径的字段: "\\random.ad.test.stuff.com\folder\level 1\51.level 2\level 3"
我想用这些信息创建一个数组
function myFunction() {
var str = "\\random.ad.test.stuff.com\folder\level 1\51. level 2\level 3";
var array = str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "_");
document.getElementById("demo").innerHTML = array;
}
问题是右括号的\51字符代码。所以结果是
"_random_ad_test_stuff_comfolder_level 1__. level 2_level 3".
如何转义 \51 并插入 _after .com ?
最佳答案
事后无法转义字符串。正如您所说,在字符串文字中, \51
是 )
,就像您在字符串文字中键入 )
一样;结果字符串没有区别:
console.log("\51" === ")"); // true
您必须转义文字中的字符:
var str = "\\\\random.ad.test.stuff.com\\folder\\level 1\\51. level 2\\level 3";
// --------^-^-------------------------^-------^--------^------------^
console.log(str);
请注意,这只是因为您使用的是字符串文字。如果您从某个地方读取该字符串,则根本不需要转义它。转义(在这个意义上)是一个字符串文字,而不是字符串。
<小时/>您说过这来自 XML 文件,并询问您必须对该文件执行什么操作才能避免此问题。答案是:没什么。读入 XML 文件,当您从中获取这些文件名时,您将再次获得具有正确字符的字符串,转义适用于字符串文字,但 XML 不是字符串文字。
示例:
// "Read" the file
var xmlText = document.querySelector("#xml").textContent;
// Parse it
var oParser = new DOMParser();
var oDOM = oParser.parseFromString(xmlText, "application/xml");
// Use its contents; the information you'll get will be valid strings,
// no escaping needed
var entries = oDOM.querySelectorAll("entry");
console.log(entries[0].getAttribute("attr"));
console.log(entries[1].firstChild.nodeValue);
<script id="xml" type="text/xml"><root>
<entry attr="\\random.ad.test.stuff.com\folder\level 1\51. level 2\level 3" />
<entry>\\random.ad.test.stuff.com\folder\level 1\51. level 2\level 3</entry>
</root></script>
在该示例中,我展示了从属性或元素主体中获取字符串,这是将信息放入 XML 中的两种常用方法。
关于javascript - JavaScript 中的转义\51,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50856953/