在 iPhone 上,沒有任何原生按鈕、選單或文字取代規則能為清單中的每一行加上相同的前綴,而這項限制正是讓這項工作在「備忘錄」、「訊息」、「郵件」和「提醒事項」中顯得幾乎不可能的原因。可靠的解決方式是開啟 Safari,載入一個名為 為每一行加上前綴和後綴 的免費瀏覽器工具,從剪貼簿貼上清單,輸入想要的前綴,產生結果,然後下載一個乾淨的 UTF-8 TXT 檔,透過分享面板送回任何 iOS 編輯器。所有處理都在瀏覽器分頁中本地完成,因此清單從不離開裝置,前綴會以字面字串插入,不經過正則表達式或 Markdown 解譯,原始的行順序、行內空白與定位點都會原封不動地保留。輸出會以純文字(而非渲染後的 HTML)形式呈現,這代表每一行裝飾過的文字都能乾淨地貼入「備忘錄」、「訊息」、「郵件」或任何重視程式碼的目的地,不會有隱形樣式從中作梗。

add prefix to each line on iphone
在 iPhone 的 Safari 中為每一行加上前綴

為什麼 iPhone 在「為每一行加上前綴」這類工作上力有未逮

iPhone 有許多輸入輔助功能,但沒有一項能對應這個特定的工作。iOS 的「文字取代」功能可以在輸入時把一個簡短縮寫展開為較長的片語,對於重複同一句話很方便,但無法把同一段文字片段加在一百行不同的行首。「尋找並取代」功能存在於 iPhone 上的 Pages 與 Numbers 中,但它只能在本文內把一段文字換成另一段;它無法把前綴固定加在每一行的開頭。「捷徑」App 可以串接動作,也提供內建的「取代文字」動作,但要建立一個能逐行迴圈、以換行切分、再把結果重新接合的捷徑,步驟繁瑣,而且當清單包含標點符號或非 ASCII 字元時還會變得脆弱。

「郵件」、「訊息」和「備忘錄」還有更進一步的限制:iPhone 沒有多重游標編輯,所以你無法像在 Mac 上那樣,在第 1 行放一個插入號、輸入前綴、按住並拖曳到第 50 行,然後把相同的前綴貼在整個選取範圍上。即使某個 App 支援富文字,編輯介面仍然是一次處理一行,這代表一個 200 行的 CSV 欄位用手動裝飾可能要花上二十分鐘。這正是瀏覽器型前綴工具能填補的落差:實際的編輯只在真正的文字區中進行一次,iPhone 只負責把輸入複製進來、把輸出複製出去。

解決方案:在分頁中本地執行的瀏覽器工具

「為每一行加上前綴和後綴」工具是一個單頁公用程式,完全在它所開啟的 Safari 分頁內執行。貼上或輸入最多一百萬個字元,輸入一個前綴、一個後綴,或兩者皆輸入,選擇是否要保留空行,然後點選動作按鈕來產生裝飾過的文字。轉換僅僅是連接:前綴加上原始行再加上後綴,並以 LF 換行接合。由於所有處理都在瀏覽器中使用 JavaScript 字串本地完成,貼上的清單永遠不會被傳送到遠端伺服器,這在多人共用或受監管的 iPhone 上尤其重要,因為把按鍵記錄外傳是一大疑慮。

有幾項細節讓它比一般文字編輯器更貼近 iPhone 上的工作流程。前綴與後綴會以字面字串插入,因此方括號、引號、美元符號、反斜線、星號和括號都會完全照打的一字不漏出現,永遠不會被解讀為正則表達式標記、Markdown、HTML 或 shell 跳脫字元。工具不會修剪、改變大小寫、排序或刪除重複的行;它只做連接。貼上內容中 CRLF 與經典 Mac 的 CR 換行都會被辨識並在輸出中統一為 LF,因此從 Windows 匯出的 CSV 可以乾淨地貼入,不會留下多餘的歸位字元。結果會顯示在一個使用預先格式化間距的預覽區,然後以本機 UTF-8 文字 Blob 下載,這代表儲存的檔案不含位元組順序標記、不含富文字樣式,也不含試算表式的引號,當它在「備忘錄」或「檔案」中重新開啟時不會有干擾。

如何在 iPhone 的 Safari 中為每一行加上前綴

  1. 將清單複製到剪貼簿。在「備忘錄」、「訊息」或任何有文字的 iOS App 中,長按、視需要選擇「全選」,然後點選「拷貝」。剪貼簿中現在存有原始的行。
  2. 開啟 Safari 並前往「為每一行加上前綴和後綴」。
  3. 點選輸入區域並選擇「貼上」。行會依照原本的順序出現,包括空行以及只含空白的行。
  4. 在「前綴」欄位中輸入前綴。最多允許 200 個 Unicode 字元,因此表情符號與附有變音符號的字元都能直接貼上。
  5. 如果也需要後綴,請在「後綴」欄位中輸入。如果只需要前綴,請將後綴欄位留空;兩個欄位中至少要有一個不是空的,工具才會產生結果。
  6. 決定是否要保留空行不變。如果空行與只含空白的行都應原樣通過,請開啟「保留空行不變」切換;如果每一個邏輯行(包括空行)都應該被裝飾,請關閉該切換。
  7. 點選動作按鈕以產生結果。預覽會顯示完整的輸出字串,所有空白與換行都會完整保留。
  8. 點選下載連結,透過 Safari 的一般下載流程儲存一個 UTF-8 TXT 檔。
  9. 回到「備忘錄」、「訊息」或目標 App 並「貼上」結果。「分享面板」也可以接收下載的檔案,因此可以丟入「檔案」、「郵件」或任何支援附件的 App。

這個流程讓資料留在裝置上,避免把清單拖進會重新格式化或上傳內容的第三方文字編輯器。

前綴與後綴實際上是如何插入的

一旦貼上輸入內容,工具會在每一個邏輯行的邊界(包括 CRLF、CR 與 LF)處切分,同時保留輸入結尾為換行時的尾端空行。每一個切分後的行都會保留其前導空白、定位點與所有行內空白;不會進行修剪、合併或改變大小寫。轉換過程就是字面字串前綴加上原始行再加上後綴,逐行重複並以單一 LF 分隔符重新接合。預覽中的自動換行純粹是視覺效果,並不會在實際下載的檔案中插入真正的換行。

「空行」切換控制的是涵蓋範圍而非刪除行為。當啟用「保留空行不變」時,空字串與只含空白字元的字串都會原樣返回,完全由空白組成的行不會被裝飾,且其空白也不會被移除。當切換關閉時,每一個邏輯行都會被裝飾,包括空行與只含空白的行。輸入結尾的換行仍然會構成一個最終邏輯行;當略過空行時,該最終行在輸出中仍保持空白,而當裝飾空行時,它則會被加上前綴與後綴。編輯輸入、前綴、後綴或空行設定會清除先前的結果並撤銷其下載網址,這能避免在參數描述不同輸出的情況下,先前的結果仍可被下載。

iPhone 使用者常見的裝飾模式

「為每一行加上相同前綴」的概念在 iPhone 上的許多小工作中都會出現。下表比較了典型的使用情境與人們最常插入的字面字串。精確的轉換結果來自工具本身,這裡只顯示方向與大致輪廓。

使用情境典型前綴典型後綴說明
「備忘錄」中的項目符號清單- (空)連字號加一個空白會把清單轉為可直接複製的項目符號。
Shell 註解區塊# (空)井字號加一個空白會把清單轉為可直接貼上的註解區塊。
SQL IN 子句值'',單引號包住每個識別字;每行尾端加上逗號。
日誌標記[INFO] (空)方括號加一個空白會一致地標示每一行日誌。
Markdown 引用區塊> (空)大於符號加一個空白會把清單渲染為 Markdown 引用區塊。
縮排的子項目    (空)四個字面空白加入一致的縮排,不會改變行內其他內容。

有兩項限制適用於上述模式。每個前綴與後綴最多 200 個 Unicode 字元,這對於上述任何標記再加上小型自訂標籤都已綽綽有餘。輸入合計上限為一百萬個字元,因此即使是一篇很長的「備忘錄」頁面或一個規模不小的 CSV 欄位,也能輕鬆納入單次貼上。

點選下載前需要知道的事

下載的檔案本身是一個純 UTF-8 文字 Blob,沒有位元組順序標記、沒有富文字樣式、沒有試算表引號,也沒有 CSV 跳脫,這正是它能乾淨地貼回「備忘錄」或「檔案」而不會夾帶隱藏格式的原因。如果目的格式本身有跳脫規則(例如 SQL、JSON 或 CSV),則結果需要另外針對該格式進行驗證或跳脫;這個工具只做字面上的前綴加後綴連接。預覽中的視覺換行並不會在實際下載的檔案中插入真正的換行,檔案內容與預覽所顯示的字串完全一致。

這個工具不會在行內尋找並取代文字、不會加上流水號、不會剖析 CSV 欄位、不會編輯 Word 文件,也不會從貼上內容推斷語法,因此需要數字序列的工作應該把這個流程與專門的 為文字加上行號 工具搭配使用,而子字串編輯則應交由另一個獨立工具處理。對於在 iPhone 上為一份清單的每一行加上相同前綴、後綴或兩者皆加這個狹窄任務而言,瀏覽器方案能把清單留在裝置上,並產生可預期的純文字輸出。

如果你正在權衡選項,如何正確地在 Notepad++ 中為每一行加上引號 對此有詳細說明。

如果你正在權衡選項,粗體文字產生器:命令列與線上工具比較 對此有詳細說明。