iOS计算输入字符数
生活随笔
收集整理的這篇文章主要介紹了
iOS计算输入字符数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
iOS計算輸入字符數
本文展示在iOS下,如何正確的計算輸入的字符個數。
常見編碼
漢字、中文符號
UTF-8編碼下,一個漢字,包括中文符號標點,占3個字節。 GBK、GB2312編碼下,是2個字節。
emoji表情
無論是UTF-8,還是GBK、GB2312,emoji表情都是占用4個字節。
iOS的設備編碼
iOS的設備,基本上都是使用UTF-8編碼,所以一個漢字是3個字節。
現狀
通常情況下,數據庫的存儲,會使用UTF-8編碼。 而我們在編程時,會把一個漢字認為是2個字節。
結論
因此,我們需要使用GBK的編碼,去判斷用戶輸入的字符個數,以作限制。
1、獲取GBK編碼
NSStringEncoding encoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);2、使用GBK編碼作為 cStringUsingEncoding 方法的編譯,來獲取字符串的cString首個字符指針。
3、使用 lengthOfBytesUsingEncoding 獲取字節長度,然后遍歷,由此計算出所有字符長度。
代碼示例
將以下代碼放入NSString的category
- (NSUInteger)charactorNumber {NSStringEncoding encoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);return [self charactorNumberWithEncoding:encoding]; }- (NSUInteger)charactorNumberWithEncoding:(NSStringEncoding)encoding {NSUInteger strLength = 0;char *p = (char *)[self cStringUsingEncoding:encoding];NSUInteger lengthOfBytes = [self lengthOfBytesUsingEncoding:encoding];for (int i = 0; i < lengthOfBytes; i++) {if (*p) {p++;strLength++;}else {p++;}}return strLength; }轉載于:https://my.oschina.net/u/3729372/blog/1596610
總結
以上是生活随笔為你收集整理的iOS计算输入字符数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浏览器控件JxBrowser 6.18发
- 下一篇: elasticsearch-查询基础篇