簡體   English   中英

Javascript 帶有轉義字符串字符的 Array.join

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM