如何刪除文字檔裡頭的 \0 及其他不可見字元 |
答題得分者是:Stallion
|
chtai
高階會員 發表:68 回覆:238 積分:116 註冊:2004-05-21 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
Trims leading and trailing spaces and control characters from a string.
Unit SysUtils Category string handling routines extern PACKAGE AnsiString __fastcall Trim(constAnsiString S); extern PACKAGE WideString __fastcall Trim(const WideString S); Description Trim removes leading and trailing spaces and control characters from the given string S. |
Coffee
版主 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
|
chtai
高階會員 發表:68 回覆:238 積分:116 註冊:2004-05-21 發送簡訊給我 |
Trim 應該只會處理頭跟尾,所以應該不是我要的。
我的文字檔有大有小,大有可能大到 2~30MB。 不知是否有什麼比較快的方法呢? ===================引 用 文 章=================== Trim...看起來..好像...只會處理字串的頭跟尾...?...(逃走) 我是很懶..就為你想要的字元建立一個列舉,然後逐字檢查..XD 你可以整個讀到記憶體裡面,處理完之後再一口氣寫回去,只要檔案不大的話XD
------
My Web: http://nelson.csie.us My Blog: http://blog.nelson.csie.us |
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
我只是想開個頭給個思緒而已~
Trim不光只是個單一函數而已!它在String的物件裡面同樣也有個同名的物件方法。因此既然是個檔案何不動態產生一個類似TMemo之類的VCL元件然後以其Lines屬性中的方法LoadFromFile讀進記憶體後,再依照物件的Lines屬性來清除控制字元呢?類似如下: char *pChar; int i; TMemo *aMemo; AnsiString aString,TempString; try { aMemo = new TMemo(this); aMemo->Lines->LoadFromFile("\\yourfilename.txt"); for ( i = 0 ; i < aMemo->Lines->Count ; i ) { aString = aMemo->Lines->Strings[i]; aString = aString.Trim(); // could also TrimLeft() or TrimRight() pChar = aString.c_str(); TempString = ""; while ( isprint(*pChar) || *pChar == '\n' ) TempString = *pChar ; aString = TempString; // your code.... } } __finally { delete aMemo; } |
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |