2012-11-24 82 views
0

如何在給定字符串內替換雙反斜槓「\\」後面的單詞內容,只有一個反斜槓\?JS之後替換反斜槓

var a = "blah blah \\ \\ content:\"whiskey \\\\"; 

,使其顯示爲:

var a = "blah blah \\ \\ content:\"whiskey \\"; 

我嘗試沒有成功以下。具體的問題

a.replace(/content:*\\\\\"/g, "\\")); 

回答

3

與其試圖用正則表達式解決整個問題,我只是在「內容」上打斷字符串,並在右半部分進行替換。

function fn(x) { 
    var i = x.indexOf("content"); 
    return x.substr(0,i) + x.substr(i).replace(/\\\\/g, "\\"); 
} 

// this evaluates true 
fn("blah blah \\ \\ \\\\ content:\"whiskey \\\\\\\\ \\\\") == 
    "blah blah \\ \\ \\\\ content:\"whiskey \\\\ \\" 
+0

我認爲這是正確的答案。不幸的是,正則表達式並不總是解決方案。 :( – Xymostech

+0

克里斯托弗,你是否主張拆分字符串,因爲它更簡單? –

+0

拆分字符串更好,因爲那樣你就可以一次完成所有的替換操作。 – Xymostech

1
a.replace(/(content:.*)\\\\/g, "$1\\"); 

,你必須在你的正則表達式一個",你需要.*匹配任何東西,你需要把一組周圍的第一部分,因此您可以在以後檢索。

您確實需要多次運行這個操作,直到它完成了所有的替換操作,不幸的是,由於JavaScript匹配的方式。

+0

這是有趣的,它必須運行多次。確保您運行所有替代品的最佳做法是什麼? –

+0

絕對不知道。您可以繼續更換,直到字符串停止更改,或者等到字符串長度停止減少爲止。 – Xymostech

0

試試用這個,不用替換方法!

a.split('\\\\').join('\\'); 

而結果應和:

blah blah \ \ content:"whiskey \ 
+0

這是...不是他們想要的 – Xymostech

+0

他說如果他想要雙反斜槓替換成單個反斜槓,所以我給我所知道的 – faid

+0

他說:「在給定的字符串**之後單詞'content'**「,你也可以在單詞'content'之前替換。 – Xymostech