簡體   English   中英

JavaScript replace()刪除兩個特殊字符之一

[英]Javascript replace() removing one of the two special characters

在變量var2中替換{t},從var1中刪除“ $”符號,並將其呈現為abc $ abc而不是最終結果中的abc $$ abc。

var var1 = 'abc$$abc';
var var2 = 'You are comparing {t} entity';
$('#div1').append('<div id="div2">' + var2.replace('{t}','<a href="' + var1 + '" target="_self">' + '</a>') + '</div>');

我能找到的最接近的問題是帶有特殊字符的Javascript追加元素 ,但即使這樣也無法解決問題。

毫無疑問,我可以檢查結果字符串是否僅包含兩個$ s中的一個$,但是我想知道上面的append是否有問題,以及是否有任何通用的方法來實現結果字符串用兩個$符號恢復。

$$String.replace()替換模式 ,始終由單個$替換。 您需要將所有美元符號加倍:

var var1 = 'abc$$abc'.replace( /\$/g, '$$$$' );

(四個美元符號,因為它們再次充當替換模式。)

$在javascript字符串替換中具有特殊含義。 當您使用$$時,基本上可以逃脫其中之一。 如果您想要兩個,可以使用四個$$$$

為了使您的代碼特別有效,我認為這是最簡單的事情:

var var1 = 'abc$$abc'.split("$").join("$$");

JSFiddle

有關$ in replace() $詳細信息,請參見此處: Mozilla docs


想通了,我也會在這里插入我的評論:

如果您需要確保在{t}替換期間完成此操作(如果字符串在初始化后可能會更改),則可以像這樣將其放入:

$('#div1').append('<div id="div2">' + 
    var2.replace('{t}','<a href="' + 
        var1.split("$").join("$$") + 
        '" target="_self">' + '</a>')
+ '</div>');

或者,如果這是需要經常在各個地方完成的工作,則可以為其創建自己的函數,例如:

function replaceEscapingDollars(str, find, replacement) { 
    return str.replace(find, replacement.split("$").join("$$"));
}

那么您的代碼將如下所示:

$('#div1').append('<div id="div2">' + 
    replaceEscapingDollars(var2, '{t}', '<a href="' + var1 + '" target="_self">' + '</a>') +
'</div>');

JSFiddle


但最簡單的事情可能就是根本不使用replace ...

var2.split('{t}').join(var1)

JSFiddle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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