為每一行加上引號,意思就是將貼上的清單中每一個項目都用一對相符的引號包起來 —— 通常 JSON 或 CSV 用雙引號,SQL 用單引號,JavaScript 樣板字面值用反引號 —— 然後用分隔符號把包好的項目串接起來,讓結果可以直接貼上成程式碼。怎麼做才正確,完全取決於你要貼入的格式,因為每種格式對處理值中已經存在的引號各有不同的規則。例如,一個含有撇號的產品名稱清單,如果撇號沒有加倍,SQL 就會出錯;如果值中的雙引號沒有加上反斜線跳脫,JSON 就會出錯;如果欄位中的雙引號沒有加倍,CSV 也會出錯。「為每一行加上引號」工具會幫你處理這些規則:貼上清單、點選你需要的格式預設,工具就會在一次操作中為每一行加上引號並套用對應的跳脫規則。輸出就是 JSON 陣列、SQL IN 子句,或單行 CSV 資料列的精確語法,不需要手動編輯,也不用擔心忘記跳脫。

「為每一行加上引號」能做什麼
把一份清單用引號包起來,是那種看起來很瑣碎、但只要做超過兩次就會覺得煩的工作。同事在聊天室貼上五十個使用者 ID、測試人員從試算表給你一整欄產品 SKU,或一段腳本需要一份固定的特性開關白名單 —— 突然之間,你就得不斷重複輸入引號、值、引號、逗號,還得一邊記得 SQL 究竟是用反斜線跳脫還是用成對引號。為每一行加上引號工具正是為了這種情境而設計。它接受一行一個項目,並用符合目標格式的引號樣式把每個項目包起來,用正確的分隔符號串接起來,然後輸出該語法預期的外層方括號、括號或資料列。原本需要小心操作、仔細檢查的工作,只要一個點擊就能完成。
輸出不是單純加上引號的文字。每個預設都對應一個明確的公開標準:JSON 預設遵循 RFC 8259 的字串字面值規則;SQL 預設遵循 PostgreSQL、SQLite 及 ISO 標準所記載的「單引號加倍」規則;CSV 預設則遵循 RFC 4180 對內嵌雙引號的規範。這三條規則彼此不同,而這些差異正是預設所要捕捉的重點。
什麼時候需要為清單加上引號
一份普通清單必須變成帶引號的語法,這類情境在日常工作各個環節中都會出現。以下是一些最常見的情況:
- 從試算表貼出的名稱或 ID 清單,用來建立單元測試的 JSON 陣列 fixture。
- 組裝 SQL WHERE ... IN (...) 子句來執行臨時查詢,特別是在事件應變期間,值是來自日誌行而非資料表。
- 為一次性匯入建構一列 CSV 資料列,系統需要整列都在同一行上。
- 產生一份會放進設定檔的特性開關或 API 金鑰環境白名單。
- 為一小組翻譯內容產生 i18n 字串表,逐行撰寫值會比較容易。
- 撰寫必須與待測試程式碼所預期內容完全一致的測試資料 fixture。
在每一種情況下,清單都是一行一個項目,而目標格式希望每個項目都被包起來並串接,各格式之間的差異往往是最耗時的部分。這個工具的目的,就是把這些差異化約為一個點擊。
如果你要加引號的清單含有重複項目,先清理一次是值得的額外步驟 —— 這個加引號工具只會把收到的內容包起來,所以重複的項目會保持重複。把加引號步驟搭配一次 移除重複行 操作,就能處理從日誌拉出來的清單,結果既唯一又格式正確。
三步驟為每一行加上引號
完整的工作流程只要三個步驟,而且即使是長清單也能立即得到結果。
- 把清單貼到輸入框中,一行一個項目。空白行可以保留,預設會自動略過。如果你不希望輸出包含前後空白,可以修剪每一行。
- 點選你要貼入格式的預設:JSON 陣列、SQL IN 子句、CSV 資料列,或是只需要包引號而不串接的「純引號」。
- 只有在預設值不符合你的目標時,才調整引號樣式、分隔符號或跳脫設定 —— 例如,把分隔符號改成分號、選擇單引號而非雙引號,或是關閉跳脫(讓下游工具自行處理)。然後複製可直接貼上的結果。
輸出會回報處理了幾行,讓你可以確認每個輸入行都有進入處理流程。你可以隨時在同一份輸入上切換預設,這讓你能輕鬆比較同一份清單在 JSON、SQL 和 CSV 下的輸出差異。
每種格式如何跳脫內嵌引號
含有引號字元的行,正是手動加引號最容易出錯的地方。同一個輸入在各種格式下會有不同的行為,而你要貼入的格式決定了哪種行為才是正確的。
| 格式 | 包覆字元 | 內嵌引號規則 | 公開來源 |
|---|---|---|---|
| JSON 陣列 | "(雙引號) | \" —— 反斜線跳脫 | RFC 8259 |
| SQL IN 子句 | '(單引號) | '' —— 引號加倍 | PostgreSQL / SQLite / ISO |
| CSV 資料列 | "(雙引號) | "" —— 引號加倍 | RFC 4180 |
| 反引號樣板 | `(反引號) | \` 和 \${ —— 跳脫反引號與插值起始符號 | JavaScript 樣板字面值規則 |
以 it's 這個值為例:
- JSON 預設:["it's"] —— JSON 中內部的撇號不需要特別處理;但如果值中含有字面上的雙引號(例如 he said "hi"),輸出就會是 ["he said \"hi\""]。
- SQL 預設:('it's') 會變成 ('it''s') —— 撇號根據 SQL 字串字面值規則加倍,PostgreSQL、SQLite 及 ISO 標準都採用這條規則。根據 PostgreSQL 詞彙結構說明文件,SQL 字串常數是藉由重複單引號來跳脫,而不是加上反斜線。
- CSV 預設:("it's","he said ""hi""") 會變成單一一行,其中每個欄位都用雙引號包起來,而任何內嵌的雙引號本身也會加倍。
這個工具會套用這些規則,讓你不需要記得哪個對應哪個。你選擇格式,工具就會套用對應的規則。同一個輸入在 JSON 預設下會產生帶有反斜線跳脫雙引號的字串;而在 SQL 預設下會產生帶有加倍單引號的字串。每一種輸出對其目標格式來說都是有效的,但對其他格式來說則是無效的 —— 這正是預設存在的原因,而不是只用一個通用的「加引號」模式。
為純文字與樣板選擇引號樣式
除了三種具名格式之外,這個工具也開放底層控制項,讓你能為任何目標用途包裝每一行。引號樣式選擇器涵蓋單引號、雙引號、反引號,以及不加分隔符號。每一種適用於不同的情境:
| 引號樣式 | 常見用途 | 備註 |
|---|---|---|
| 雙引號 (") | JSON 陣列、CSV 資料列、shell 字串 | 預設值;適用於大多數程式碼與資料格式 |
| 單引號 (') | SQL 字串字面值、部分 shell 腳本 | 依 SQL 慣例將值內的單引號加倍 |
| 反引號 (`) | JavaScript 樣板字面值 | 會跳脫反引號與插值起始符號 ${,避免貼上的內容注入運算式 |
| 無 | 只修剪並串接行,不加引號 | 適合產生不需要包引號的 CSV 或 TSV 風格輸出 |
反引號值得特別說明,因為它的跳脫規則與其他樣式不同。內嵌的反引號會變成反斜線加反引號,插值起始符號也會被跳脫。這讓反引號預設在目標為 JavaScript 樣板字面值時很安全 —— 否則貼上字串 ${user.name} 會被解讀為程式碼運算式。
你也可以完全關閉逗號分隔符號,選擇其他分隔符號(例如直線或分號),或者在最後一行加上尾端逗號(如果目標格式需要的話)。尾端逗號切換預設為關閉,因為在大多數情境下,帶有尾端逗號的 JSON 陣列或 SQL IN 清單會造成語法錯誤;這個工具的設計目標是產生可直接貼上的輸出,而不是還需要再清理的結果。
隱私、限制與重新執行
當你開始把這個工具用在真實資料上時,有兩個實際細節需要注意。
首先是隱私。你要加引號的清單常常包含識別資訊、姓名或權杖,你多半不想把它們送到伺服器。這個工具完全在你的瀏覽器中執行:輸入內容在本機處理,不會上傳,也不會綁定任何帳號。資料只會留在你開啟的頁面上。
其次是輸入上限。這個工具最多接受一百萬個字元,並以單一線性方式處理輸入,因此即使是非常長的清單也能快速得到結果。如果你的清單超過這個長度,最安全的做法是先切割再加引號 —— 或者搭配本站的 文字檔切割器,切割成可預測的區塊,之後再合併。
有一個行為需要特別說明,而不是隱藏起來:如果你對工具自己的輸出再執行一次,它會把輸出再包一層。加引號工具無法判斷輸入中的引號是內容本身,還是先前執行所加上的外殼,因此重新執行會刻意地做雙層包覆。如果你需要不同的設定 —— 例如從 JSON 切換到 SQL —— 請從原本的純文字清單開始,而不是從先前的輸出開始。
延伸閱讀:為每一行加上前綴:模式速查表。