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计算输入字符数相关推荐
- android 输入框 实时计算剩余的输入字符数(addTextChangedListener)
照例先上传效果图: 1 布局文件很简单 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andro ...
- c语言程序设计输入c,C语言程序设计(计算输入字符)
编写一个程序,该程序读取输入,知道遇到#字符,然后报告读取的空格数目.读取换行符数目以及读取其他所有的字符数目,打印读取到的数目 我虽然写了一个代码,可能是我理解错题意了,有很多问题,比如输入一个#号 ...
- 【转】android 中如何限制 EditText 最大输入字符数
原文网址:http://blog.csdn.net/fulinwsuafcie/article/details/7437768 方法一: 在 xml 文件中设置文本编辑框属性作字符数限制 如:andr ...
- android edittext最多输入,android 中如何限制 EditText 最大输入字符数
方法一: 在 xml 文件中设置文本编辑框属性作字符数限制 如:android:maxLength="10" 即限制最大输入字符个数为10 方法二: 在代码中使用InputFilt ...
- android 中如何限制 EditText 最大输入字符数
方法一: 在 xml 文件中设置文本编辑框属性作字符数限制 如:android:maxLength="10" 即限制最大输入字符个数为10 方法二: 在代码中使用InputFilt ...
- python计算英文字符数
在做英语大作业的时候,老师要求至少写5000个字符,但是word中只能统计单词数,于是我就浅浅写个代码帮我计算下吧. 文章目录 代码 总结 代码 # -*- coding: utf-8 -*- #首先 ...
- 限制input输入字符数(中文2个字符,英文1个字符)
input的maxlength可以限制input的输入的字符数,但是是字符串的长度,相当于判断str.length;然而经常会有中文字符算2个字符英文算1个字符的需求,目前只能通过编写代码来实现. & ...
- android 限制edittext 最大输入字符数
最大字符数: private final int INT_MAX_NUM = 256; private class EditChangeLisener implements TextWatcher { ...
- python统计小写字母出现次数_Python函数计算字母字符数,跟踪“e”出现的次数...
编写一个接收字符串作为输入的函数analyze_text.该函数应该计算文本中字母字符(a到z,或者a到z)的数量,并跟踪字母"e"(大写或小写)的数量.在 函数应返回文本分析,如 ...
最新文章
- 蓝牙小电池图标_方寸间、掌握中,omthing小方盒开箱测评
- linux系统下top命令的详细用法、参数详解、以及模式配置
- 【OpenCV 例程200篇】65. 图像锐化——Scharr 算子
- cmd无法运行python_通过Java-%1在cmd中运行python文件不是有效的Win32应用程序 - java...
- realme GT Neo3重磅细节曝光:首发150W快充 5分钟充50%
- django创建博客
- sql插入后返回id
- 《现代控制工程基础》复习笔记
- 《非暴力沟通》- 使人情意相通的沟通方式
- PIP安装本地离线包whl
- 沈向洋从微软离职,挺好的
- 数据资本时代:市场与公司
- 给高科技强国的后来者埋下的痛
- fastreport 横向打印多列
- java request修改uri,spring cloud zuul过滤器修改requestURI 忽略大小写
- CentOS8安装Docker
- 数据链路层 (一)------ 计算机网络(三)
- Linux命令行初体验
- Docker Swarm集群与Kubernetes的搭建与试用
- 亚马逊zm html,以编程方式登录amazon