![](/img/trans.png)
[英]How to escape a double-quote in inline c# script within 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("\"", "\\\""); // (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.