2007年8月9日 星期四

區分編碼型態來取得字串的位元長度

.Net 裡面對於字串(string)會提供 String.Length 屬性來取得該字串的長度,但是這個屬性並不會區分中文字或英文字,也就是一個英文字
的長度算 1 ,而一個中文字也算是 1 。如果我們要將中文字長度算成 2 時,這種中英文雜處的字串就不能夠單純的使用 String.Length 來
處理了。

這時候,我們可以使用下面的方法解決:

private string TruncateByUserDefine(string strOri,int iCharLength)
{
Byte [] byteOri = System.Text.Encoding.Default.GetBytes( strOri );
if( byteOri.length< iCharLength)
iCharLength = byteOri.length;
char [] charTrans= System.Text.Encoding.Default.GetChars( byteOri, 0, iCharLength);
string strResult=new string(charTrans);
return strResult;
}

說明一下這個函式,strOri 是我們準備要用來判斷的字串來源,而 iCharLength 則是我們所需要取出的字元長度。
我們先將來源字串轉成 Byte 的格式,再透過 GetChars 將裡面的字元一個一個讀到陣列裡頭,最後,我們就將只需
要取出所要長度的字元陣列即可。

沒有留言:

張貼留言