簡體   English   中英

如何使用 JavaScript 將字符串中的雙引號替換為轉義字符雙引號?

[英]How do I replace a double-quote with an escape-char double-quote in a string using JavaScript?

假設我有一個字符串變量( var str )如下 -

伙計,他完全說“你搖滾!”

現在,如果我要讓它看起來像下面這樣——

伙計,他完全說“你搖滾!”

如何使用 JavaScript replace()函數完成此操作?

str.replace("\"","\\""); 不太好用。 它給出unterminated string literal錯誤。

現在,如果要將上述句子存儲在 SQL 數據庫中,比如在 MySQL 中作為LONGTEXT (或任何其他VARCHAR -ish)數據類型,我還需要執行哪些字符串優化?

引號和逗號對查詢字符串不是很友好。 我也很感激有關此事的一些建議。

您需要為此使用全局正則表達式。 試試這樣:

str.replace(/"/g, '\\"');

將正則表達式與 JavaScript 結合使用中查看替換函數的正則表達式語法和選項。

試試這個:

str.replace("\"", "\\\""); // (Escape backslashes and embedded double-quotes)

或者,使用單引號引用您的搜索並替換字符串:

str.replace('"', '\\"');   // (Still need to escape the backslash)

正如 helmus 所指出的,如果傳遞給.replace()的第一個參數是一個字符串,它只會替換第一次出現的參數。 要全局替換,您必須傳遞帶有g (全局)標志的正則表達式:

str.replace(/"/g, "\\\"");
// or
str.replace(/"/g, '\\"');

但是為什么你甚至在 JavaScript 中這樣做呢? 如果您有如下字符串文字,則可以使用這些轉義字符:

var str = "Dude, he totally said that \"You Rock!\"";

但這在字符串文字中是必需的。 也就是說,如果您的 JavaScript 變量設置為用戶在表單字段中鍵入的值,則您不需要進行此轉義。

關於將這樣的字符串存儲在 SQL 數據庫中的問題,如果您在 SQL 語句中嵌入字符串文字,您只需要再次轉義這些字符 - 請記住,適用於 SQL 的轉義字符不是(通常)與 JavaScript 相同。 您會在服務器端執行任何與 SQL 相關的轉義操作。

其他答案適用於大多數字符串,但您最終可能會取消轉義已經轉義的雙引號,這可能不是您想要的。

要正常工作,您將需要轉義所有反斜杠,然后轉義所有雙引號,如下所示:

var test_str = '"first \\" middle \\" last "';
var result = test_str.replace(/\\/g, '\\\\').replace(/\"/g, '\\"');

根據您需要如何使用字符串以及涉及的其他轉義字符,這可能仍然存在一些問題,但我認為它可能在大多數情況下都有效。

var str = 'Dude, he totally said that "You Rock!"';
var var1 = str.replace(/\"/g,"\\\"");
alert(var1);

暫無
暫無

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

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