1. 程式人生 > >統計NSString中英文字串長度

統計NSString中英文字串長度

計算NSString的字元長度,用length方法Returns the number of Unicode characters in the receiver,既是英文字元和中文漢字都是一個字元長度,如@“abcde我的”長度為7,而此長度和微博的輸入字數實際上是不符的,在微博中,它的長度為5(實際是4.5,“abcde我的f” 的長度也是5),所以如果在UITextView中限制字元的長度,需要重新計算,如下: -------------------- 轉載:http://mobilesolutions.blog.163.com/blog/static/18922417620116133910181/
統計含中英文混編的NSString 字串長度 將一個NSString型別字串獲取的長度轉換成類似ASCII編碼的長度,如漢字2個位元組,英文以及符號1個位元組這個功能。
由於使用[NSString length]方法呼叫獲取的長度是一箇中文和一個英文都是一個位元組,而使用

[NSString lengthOfBytesUsingEncoding:NSASCIIStringEncoding] 方法無法識別中文編碼,真是令人揪心。

於是想獲得一個char*型別的字串,然後自己遍歷一遍,將它整理為類似ASCII編碼的格式,這裡要用到

[NSString cStringUsingEncoding:NSUnicodeStringEncoding]函式獲得一個const char*指標,然後對這個字串進行遍歷,遇/0就跳過,否則length+1,下面是程式碼,拿出來與大家分享:

-  (int)convertToInt:(NSString*)strtemp {

int strlength = 0;

char* p = (char*)[strtemp cStringUsingEncoding:NSUnicodeStringEncoding];

for (int i=0 ; i<[strtemp lengthOfBytesUsingEncoding:NSUnicodeStringEncoding] ;i++) {

if (*p) {

            p++;

            strlength++;

        }

else

{

            p++;

        }

    }

return (strlength+1)/2;

}