oracle 截取中英文混合_C语言截取中英文混合字符串
生活随笔
收集整理的這篇文章主要介紹了
oracle 截取中英文混合_C语言截取中英文混合字符串
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
因為涉及到中文字符和Ascii字符混合,寫的時候稍費了點腦筋....
貼上已成功實現的代碼供大家學習參考,如果有哪些可以改進的地方歡迎留言指正
=================================
實現目的:只顯示任意第n個字符之前的字符
*示例文本:“chi紅na中國發verygood”
*思路:
Ascii碼最高bit位都是0,每個字符占用1個字節
GB2312碼最高bit位都是1,每個字符占用2個字節
可以判斷最高bit位為1的為中文字符
假設截取掉第4個字符 “紅”之后的文本,那么之前的占用字節就是 1+1+1+2=5
把5往后的1個字節修改為‘0’
假設截取掉第8個字符“國”之后的文本,那么之前的占用字節就是 1+1+1+2+1+1+2+2=11
把11往后的1個字節修改為“0”
void function(int num) {char text[100]="chi紅na中國發verygood";int k=0;char Set[100];int mp=0;int iCut=0;int i=0;int len=strlen(text);for(i=0;i<len;i++){if(text[i]>>7&1)//如果最高位右移&運算后==1{k=k+2;Set[mp++]=k;i++;//中文字符占2個字節 i++ 避免下次循環又讀取同一個字符的第2個字節}else{k=k++;Set[mp++]=k; }}/*關鍵在于Set[mp++] 存儲結束字符的位置 ,循環結束后直接讀取結束位置的字符設置為'0'即可把*/iCut=Set[num-1];text[iCut]='0';printf("%s",text);}int main() {function(4);return 0; }總結
以上是生活随笔為你收集整理的oracle 截取中英文混合_C语言截取中英文混合字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql触发器对同一张表做操作_MyS
- 下一篇: go mysql教学_Go语言之对Mys