如何得到一個(gè)漢字與字母組合的字符串的準(zhǔn)確的長度(asp.net 版本的)
發(fā)表時(shí)間:2024-05-14 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]在實(shí)際工作應(yīng)用中,很多的時(shí)候會(huì)出現(xiàn)這樣的情況,由于我們對(duì)于漢字的特殊的要求,在計(jì)算字符個(gè)數(shù)的時(shí)候,由于是Unicode的原因,我們對(duì)于一個(gè) 漢字 應(yīng)該是按照兩個(gè)字符計(jì)算,但是ASp.Net(包括以前的asp)都是給我們按照 一個(gè)來計(jì)算的,比如 "豆腐",如果是在中文系統(tǒng)中我們?cè)?..
在實(shí)際工作應(yīng)用中,很多的時(shí)候會(huì)出現(xiàn)這樣的情況,由于我們對(duì)于漢字的特殊的要求,在計(jì)算字符個(gè)數(shù)的
時(shí)候,由于是Unicode的原因,我們對(duì)于一個(gè) 漢字 應(yīng)該是按照兩個(gè)字符計(jì)算,但是ASp.Net(包括以前的asp)
都是給我們按照 一個(gè)來計(jì)算的,比如 "豆腐",如果是在中文系統(tǒng)中我們?cè)谟?jì)算他的程度的時(shí)候
"豆腐".Length() 的結(jié)果是2 而我們的要求應(yīng)該是 4 ,所以顯然是不符和要求的,所以我在這里給大家寫一個(gè)函數(shù)
就可以滿足這樣的要求.
int GetStrLen(String ss){
Char[] cc=ss.ToCharArray();
int intLen=ss.Length;
int i;
if("豆腐".Length==4){
//是非 中文 的 平臺(tái)
return intLen;
}
for(i=0;i<cc.Length;i++){
if(cc[i].ToInt32()>255){
intLen++;
}
}
return intLen;
}
我們?cè)谶@里利用的原理是中文的內(nèi)碼是大于255的,所以當(dāng)我們判斷一個(gè)字符是否是 漢字,就判斷他的內(nèi)碼
是否大于 255,如果是,我們就把這個(gè)字符的長度+1,最后我們就得到了完全符合我們要求的一個(gè)函數(shù)。