AutoCAD 內建的 FIND 指令可在開啟的圖檔中處理尋找與取代,但一款名為 Find and Replace Text 的瀏覽器工具可對您從圖檔複製出來的 AutoCAD 文字(註解、屬性值、區塊名稱、圖層名稱或 MText 內容)進行精確的逐字替換,輸入上限為 1,000,000 字元,且不會有正規表示式的意外結果。使用方式是將 AutoCAD 文字貼入工具中,輸入您要尋找的逐字字串以及逐字取代內容,選擇區分大小寫或不區分大小寫模式,並決定只取代第一個符合項目或所有不重疊的符合項目。接著工具會回報執行了多少次取代,並預覽精確轉換後的文字,讓您在將結果複製回 AutoCAD 或相關文件前能先驗證變更。由於所有比對都在您的瀏覽器中本機執行,AutoCAD 文字不會被上傳,這在圖檔包含專屬標籤、客戶代碼或未公開的產品名稱時特別重要。

how to find and replace text in autocad
how to find and replace text in autocad

AutoCAD 內建的 FIND 實際作用

AutoCAD 的 FIND 指令可從功能區存取,或在指令行輸入 FIND,會在作用中的圖檔內搜尋含有文字的物件。它適用於 TEXT、MTEXT、ATTDEF、ATTRIBUTE 以及區塊屬性值,並提供 Match Case、Whole Word 和 Wildcards 等選項。對於格式正確文字的單一圖檔變更,這是正確的起點,因為變更會直接寫回 DWG。

然而在某些常見情況下,先將文字擷取出來,在圖檔外部處理會更快也更安全:

  • 您想要在多個圖檔之間執行相同的取代,並偏好先有一個統一且可預覽的結果再實際套用。
  • 您要變更的文字埋在一段很長的 MText 字串中,而 AutoCAD 對話方塊在預覽區域中將其截斷了。
  • 您需要保證逐字行為 — 對 *、?、#、[、] 不做任何萬用字元解讀。
  • 您需要在匯出為 CSV 的數百個屬性定義中移除分隔符號或重新命名代號,然後再重新匯入。
  • 您正在建立一份文件集,想要在 AutoCAD 本身看不到的文字(例如從標題區塊記錄檔擷取的標題)中統一用詞。

為什麼逐字比對的瀏覽器工具對 AutoCAD 文字很有用

Find and Replace Text 工具會以逐字方式處理每一個字元。句點、星號、方括號、括號、美元符號和反斜線都會比對自身,這與 AutoCAD FIND 萬用字元模式的行為恰好相反。如果您的圖檔文字在類似 SPEC_v2* 的代碼中包含一個逐字的星號,而且您只想變更該單一代號,那麼瀏覽器工具只會變更精確的 SPEC_v2* 序列,而不會變更所有以 SPEC_v2 開頭的字串。

對 AutoCAD 工作流程的實際優勢:

  • 輸入上限可達 1,000,000 字元 — 足以容納幾乎所有擷取出來的文字檔,甚至完整的屬性匯出。
  • 回報的取代次數與精確的預覽,讓您在複製任何內容回去之前,能先確認實際執行了 0 次還是 47 次取代。
  • 原始的空白、定位點和換行會被精確保留 — 不會有靜默的重排或行尾標準化。
  • 編輯任何控制項會清除先前的結果,這能避免將過期的輸出誤認為是當前設定的結果。
  • 所有作業都在瀏覽器中本機執行;您圖檔中的文字內容不會離開本機。

如何使用 Find and Replace Text 工具在 AutoCAD 中尋找與取代文字

  1. 複製您要處理的 AutoCAD 文字。針對大量屬性輸出使用 ATTEXT 或 DATAEXTRACTION,或雙擊一個 MTEXT 物件後複製其可見內容。將該文字貼入 Find and Replace Text 工具的來源欄位。
  2. 輸入逐字尋找值 — 例如 Rev-Aclient_name=@@@。請不要跳脫標點符號;該工具不使用正規表示式,因此句點、星號、方括號、括號、美元符號和反斜線都會比對自身。
  3. 輸入取代值。此處也是逐字處理。允許空白的取代值,效果等同刪除,當您想要從代號中移除分隔符號時非常實用。
  4. 選擇大小寫敏感度。區分大小寫模式會精確比對字串,這對於像 Rev-Arev-a 這類代碼的處理很關鍵。不區分大小寫模式會在比對前以英文地區規則將兩側轉為小寫,然後在輸出中保留未符合字元的原始大小寫。
  5. 選擇範圍。選擇「取代第一個」只變更最早的符合項目,其餘文字保持不變;或選擇「取代全部」來替換所有不重疊的符合項目。
  6. 執行取代。工具會回報執行了多少次取代,並顯示結果字串的精確預覽。
  7. 驗證並複製回去。閱讀預覽,確認次數符合預期,然後將轉換後的文字複製回 AutoCAD — 或在您於圖檔外部批次更新屬性時,複製到資料擷取試算表中。

逐字與正規表示式:在 AutoCAD 文字上的比對行為

AutoCAD FIND 的萬用字元選項使用 * 與 ? 作為樣式元字元,可能在類代碼的文字中產生非預期的符合。因此在萬用字元模式下,檔名或屬性值中的逐字星號是有風險的。瀏覽器工具則沒有這種行為 — * 比對星號、[ 比對左方括號、$ 比對美元符號。在取代的兩側,美元樣式與反向參照都沒有特殊意義。

不重疊比對也值得注意。在字串 aaaa 中將 aa 取代為 X 會產生 XX,而不是 XXXX。第一個符合會消耗位置零和一,下一個符合消耗位置二和三,工具絕對不會在剛插入的文字上重複執行。底層搜尋演算法會以逐字比對和每次符合的固定步進長度走訪字串,這就是 MDN String indexOf 參考資料中所描述的標準 String.prototype.indexOf 行為。

可透過貼上型工具處理的 AutoCAD 文字情境

  • 在匯出為 CSV 的數百個屬性值中,將重複出現的詞組(例如 PROJECT-PHASE-1)重新命名為 PROJECT-PHASE-2
  • 在重新匯入清理過的清單之前,以空白取代將 @@@ 移除,藉此刪除分隔符號。
  • 在將新值回填到標題區塊屬性之前,將某個內部產品代碼從一個字串更新為另一個字串。
  • 清理從 TEXTSCR 或圖檔記錄檔擷取出的區塊名稱、圖層名稱或比例清單項目。
  • 透過先以 Case Converter 執行第一輪處理,接著對標準化後的輸出執行精確的取代,以統一 MText 內容中的大小寫。
  • 在將結果貼回 LAYER 指令的選取提示之前,從圖層名稱的逗號分隔清單中移除尾端的逗號。

限制、邊緣情況,以及複製回去前要驗證的事項

當來源文字來自 AutoCAD 時,有幾項限制需要注意:

  • 輸入上限為 1,000,000 字元。更長的擷取內容需要切割;如果您的來源是檔案,Text File Splitter 可在本機處理這項工作。
  • 空白尋找值會被拒絕,因為在每個邊界都比對空字串會產生歧義。相對地,空白取代值是允許的,效果等同逐字刪除。
  • 不區分大小寫模式僅適用於英文地區 — 不會執行變音符號折疊、Unicode 正規化、模糊比對、詞幹化、地區特定排序或全字偵測。請將其視為實用的英文行為,而非通用的語言等價系統。
  • 該工具不會自動偵測即時 DWG 中的區塊參考、屬性標籤或標註文字。您操作的永遠是已經從 AutoCAD 擷取或複製出來的文字。
  • 產生的預覽中沒有復原堆疊,但未變更的來源會保留在預覽上方,以便使用不同選項再執行一次。
  • 若尋找值長度超過剩餘文字,會回傳零次取代,且來源維持不變 — 零是有效的結果,並非錯誤。

比對選項一覽

選項工具中的行為典型的 AutoCAD 用途
區分大小寫以輸入的精確方式比對字元在屬性標籤中保留像 Rev-Arev-a 這類代碼的區分
不區分大小寫僅在比對時以英文地區規則將兩側轉為小寫;輸出會保留未符合字元的原始大小寫在大小寫混雜的屬性傾印中統一標籤
取代第一個在最早符合處停止,並保留未觸及的剩餘部分在大量套用前抽查一次取代
取代全部取代所有不重疊的符合項目,且絕不會重新掃描插入的文字在冗長的 MText 或屬性清單中進行批次重新命名

針對行級的前後綴處理(例如為每個擷取出的屬性標籤加上專案代碼前綴),Add Prefix and Suffix to Lines 工具會更為適合。若要在取代前檢查原始符合位置,請先執行一次 Count Occurrences。

如果您正在權衡選項,How to Find and Replace Text in Excel Without Formulas 對此有詳細說明。

如果您正在權衡選項,How to Find and Replace Text in Illustrator Safely 對此有詳細說明。