你好,請問要如何正確截取中英文混雜的String呢? |
答題得分者是:andychang1690
|
login30
一般會員 發表:3 回覆:5 積分:1 註冊:2004-07-31 發送簡訊給我 |
|
liangnet
中階會員 發表:19 回覆:148 積分:83 註冊:2004-01-03 發送簡訊給我 |
首先你要先了解一下雙字元編碼的規則!
雙字元的編碼第一個碼為0x80 ~ 0xFF
因此你在讀一個字元時判斷該碼是否為0x80 ~ 0xFF,若是則表示是雙字元編碼的第一碼!
AnsiString S = "Iam好人in這world" ; char *ptr = S.c_str(); int Count = 0; for (int i = 0; i < S.Length(); i ) { Count ; if (Count == 6 ) { if (ptr[i] & 0x80) ShowMessage(S.SubString(i 1,2)); else ShowMessage(S.SubString(i 1,1)); break; } if (ptr[i] & 0x80) i ; }發表人 - liangnet 於 2004/07/31 14:28:32 |
login30
一般會員 發表:3 回覆:5 積分:1 註冊:2004-07-31 發送簡訊給我 |
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
其實不用到char,AnsiString 就可以做到,改寫liangnet的程式: AnsiString S = "Iam好人in這world" ; int Count = 0; for (int i = 1; i <= S.Length(); i ) { //注意i從一開始 Count ; if (Count == 4 ) { if ( S[i] & 0x80) ShowMessage(S.SubString(i ,2)); else ShowMessage(S.SubString(i ,1)); break; } if ( S[i] & 0x80) i ; } 所以你要寫一個Chinese_SubString(AnsiString Str,int i_Start,int i_Num) int End_n=i_Start i_Num-1; // 你要抓取的總術字數 // 判斷最後一個字是否中文 if ( S[End_n] & 0x80) return Str.SubString(i_Start,i_num 1); // 是中文 else return Str.SubString(i_Start,i_num); // 英數字 請參考Andy Chang
------
Andy Chang |
liangnet
中階會員 發表:19 回覆:148 積分:83 註冊:2004-01-03 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |