[英]Javascript Array.join with escaped string characters
我們在 Javascript 中面臨 Array.prototype.join 方法的問題。我們有一個包含 HTML 個字符串部分的字符串數組。 這些部分包含幾個轉義雙素數 (\")。在 HTML 元素的標題和文本中,我們有字符串
4" 顯示屏
我們使用 join 的數組如下所示:
var myArray = [
"<a href=\"",
"http://www.example.com/",
"\"",
" ",
"title=\"",
"4\" display",
"\"",
">",
"4\" display",
"</a>"
];
myArray.join('');
此代碼段的 output 解析為:
'<a href="http://www.example.com/" title="4" display">4" display</a>'
如您所見,這實際上並不是我們希望的 HTML 元素。 我們希望創建這樣的東西:
'<a href="http://www.example.com/" title="4\" display">4\" display</a>'
我們再次嘗試轉義反斜杠:
"4\\\" display",
但這只是解決了
'<a href="http://www.example.com/" title="4\\" display">4\\" display</a>'
此外,我們無法控制此處的標題和文本(來自我們無法控制的來源的輸入數據),因此我們不能對雙引號使用不同的 ASCI 字符。
我們還嘗試將數組條目更改為模板字符串:
var myArray = [
`<a href="`,
`http://www.example.com/`,
`"`,
` `,
`title=\"`,
`4\" display`,
`\"`,
`>`,
`4\" display`,
`</a>`
];
myArray.join('');
但結果是一樣的:
'<a href="http://www.example.com/" title="4" display">4" display</a>'
有沒有辦法以不同的方式寫這個,所以連接會尊重轉義序列?
謝謝並致以最誠摯的問候,馬呂斯
您需要使用三個反斜杠,兩個用於獲取反斜杠,另一個用於"
。
const parts = [ "<a href=\"", "http://www.example.com/", "\"", " ", "title=\"", "4\\\" display", // <- escape here "\"", ">", "4\" display", "</a>" ]; console.log(parts.join(''));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.