Search and Replace String VI(for 中文字)

由於Benjamin提問到一些中文字的問題, 我以前也被中文碼的問題困擾很久, 昨天狠下心來寫了一個VI來解決這個問題, 和大家分享一下 

我修改了原本的search and replace string元件, 將其加入了中文碼的判斷
因此使用這個VI, 作中文的search and replace, 可以解決使用LabVIEW內建元件使用後會造成亂碼的問題
以下是一個說明的過程:

在人機界面上, 假設我們在原字串中尋找丰這個字, 欲將其取代為豐
由肉眼可以很清楚的看到, 原字串經過search and replace後, 應該沒有字串要被取代
但是我們發現原string元件處理後, 得到的字串紅色底線部份文字碼變動了,從Hex碼中可以更清楚的看見
原因是因為LabVIEW處理字串時,是先將string轉成ascii碼, 以1個byte為單位來處理
所以原字串轉成ascii碼後, 就是人機界面上Hex碼的那一串送到元件中處理

正好, 隊永兩個字連在一起時, ascii碼為B6A4A5C3, 當我們送入搜尋的字串丰(A4A5)去搜尋時
A4A5會被認為是符合條件的字串, 因此被取代為C361
因此B6A4A5C3變成B6C361C3, 61的字元碼是a, 因此剩餘的C3就被合併到後面的部份
所以因為這樣的原因, 字串可能一直被誤取代成別的字元碼, 運氣好, 可能只錯一兩個字, 運氣不好, 整個字串可能一直順延下去錯的很離譜
為了解決這樣的問題, 我先加入中文碼的判斷, 並在每個字中穿插間隔字元, 所以事後的search and replace時
只要是中文碼就會以2個bytes以上的長度來作判斷, 從人機界面左下方的結果可以清楚看到字串的處理沒有錯誤

這個VI的設計原理大致上是這樣, 初步的測試過沒有什麼問題, 只是效能梢差了一點, 因為欲處理的字串大概增加了1.5倍的資料量
不過現在電腦的硬體都很好, 資料的正確性比起效率更重要
之前我取代完一個文字檔 , 都還要再手動檢查是否有亂碼產生
現在雖然多花了約1秒的時間(約100k的txt檔), 不過至少可以省下事後的人工處理
目前沒有辦法設定offset及得到offset past replacement, 以後如果很閒會嘗試加入
有需要的人可以下載用看看, 如果有任何bug希望能夠回應通知一下
也希望大家可以改良的讓此VI處理的效率更好
之後有時間應該也會稍微改良一下其他的string元件
使得處理中文字不會有問題, 可以更有彈性

String.llb  update: 2005-06-07
test.vi

yao38511.4693865741