Android 台灣中文網

標題: [非標準字串] 正規表示式 + Excel 函數/VBA 工具 [打印本頁]

作者: kofkin00    時間: 2020-5-18 22:28
標題: [非標準字串] 正規表示式 + Excel 函數/VBA 工具
本帖最後由 kofkin00 於 2020-6-10 08:31 編輯

中篇:GB2312編碼 簡體中文(亂碼) → 繁體中文化 [非標準字串]
<研究動機>
   非標準字串,自有了畫龍字串替換器(GGGBOY 繁中化)提取英文/簡體/英簡字串,簡直如魚得水。但問題如何在破千破萬行混雜的程式段+真實字串段之中,『 火眼金睛 』離析命中真實字串段,節省許多寶貴時間,同時避開誤觸修改程式段造成回寫的錯誤!尤其如果要弄到Hex考慮字元長短,教人兩手一攤,折騰許久
不小心誤入過非標準字串歧路的道友,更能體會其標準字串的透剔美好。。。

<經驗假設>
個人流程構思是:英文字串較無亂碼問題,所以此帖主要探討GB2312編碼為主。
1.{初道過濾}提取字串後,GB2312編碼→ 簡轉繁→ 繁體.a 透過Notepad++
  正規表示式(regular expression)比對 簡亂碼+符號+英+數+繁體  逐步篩選(白名單)要的字串,8成是理想。
左圖很多字串無規律,若用Excel函數篩選程式碼字串(黑名單)非常難且多工,不如利用現成 Notepad++ 正規表示式做搜尋。用白名單形式會簡單多。
☆但須注意一些特別樣式的正常字串,如下圖
2.{二道過濾}再貼到Excel 合併原始ANSI文字檔及轉繁體文字檔的行號列+繁體字串列,加以利用Excel函數及VBA手法。
3.{末道過濾}將Excel處理過的資料,貼回 回寫用的ANSI文字檔,流程1&2乃提升效率關鍵。人力校稿
實際好處,可比較之前的帖子 中篇:GB2312編碼 簡體中文(亂碼) → 繁體中文化 [非標準字串] 之步驟9,當時方法是開兩個文字檔做Compare,一筆一筆全靠人力篩選與剪貼。

<操作說明>
使用『 畫龍字串替換器 』,當此次範例題材的簡單手法操演
因為Notepad++ 正規表示式難在保留(ID)行號列下只做字串列篩選,所以後續大部分拉到Excel處理。
◊原始.a 文字檔(ANSI編碼),目的:無空白列,Excel方便往下拉(填滿公式/函數)
   方法一:編輯 → 行處理 → 移除空行(包含只有空白的行 ) 剩11038行
移除空行.jpg
登錄/註冊後可看大圖