統計NSString中英文字串長度
阿新 • • 發佈:2019-02-01
計算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 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;
}