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计算输入字符数相关推荐

  1. android 输入框 实时计算剩余的输入字符数(addTextChangedListener)

    照例先上传效果图: 1  布局文件很简单 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andro ...

  2. c语言程序设计输入c,C语言程序设计(计算输入字符)

    编写一个程序,该程序读取输入,知道遇到#字符,然后报告读取的空格数目.读取换行符数目以及读取其他所有的字符数目,打印读取到的数目 我虽然写了一个代码,可能是我理解错题意了,有很多问题,比如输入一个#号 ...

  3. 【转】android 中如何限制 EditText 最大输入字符数

    原文网址:http://blog.csdn.net/fulinwsuafcie/article/details/7437768 方法一: 在 xml 文件中设置文本编辑框属性作字符数限制 如:andr ...

  4. android edittext最多输入,android 中如何限制 EditText 最大输入字符数

    方法一: 在 xml 文件中设置文本编辑框属性作字符数限制 如:android:maxLength="10" 即限制最大输入字符个数为10 方法二: 在代码中使用InputFilt ...

  5. android 中如何限制 EditText 最大输入字符数

    方法一: 在 xml 文件中设置文本编辑框属性作字符数限制 如:android:maxLength="10" 即限制最大输入字符个数为10 方法二: 在代码中使用InputFilt ...

  6. python计算英文字符数

    在做英语大作业的时候,老师要求至少写5000个字符,但是word中只能统计单词数,于是我就浅浅写个代码帮我计算下吧. 文章目录 代码 总结 代码 # -*- coding: utf-8 -*- #首先 ...

  7. 限制input输入字符数(中文2个字符,英文1个字符)

    input的maxlength可以限制input的输入的字符数,但是是字符串的长度,相当于判断str.length;然而经常会有中文字符算2个字符英文算1个字符的需求,目前只能通过编写代码来实现. & ...

  8. android 限制edittext 最大输入字符数

    最大字符数: private final int INT_MAX_NUM = 256; private class EditChangeLisener implements TextWatcher { ...

  9. python统计小写字母出现次数_Python函数计算字母字符数,跟踪“e”出现的次数...

    编写一个接收字符串作为输入的函数analyze_text.该函数应该计算文本中字母字符(a到z,或者a到z)的数量,并跟踪字母"e"(大写或小写)的数量.在 函数应返回文本分析,如 ...

最新文章

  1. 蓝牙小电池图标_方寸间、掌握中,omthing小方盒开箱测评
  2. linux系统下top命令的详细用法、参数详解、以及模式配置
  3. 【OpenCV 例程200篇】65. 图像锐化——Scharr 算子
  4. cmd无法运行python_通过Java-%1在cmd中运行python文件不是有效的Win32应用程序 - java...
  5. realme GT Neo3重磅细节曝光:首发150W快充 5分钟充50%
  6. django创建博客
  7. sql插入后返回id
  8. 《现代控制工程基础》复习笔记
  9. 《非暴力沟通》- 使人情意相通的沟通方式
  10. PIP安装本地离线包whl
  11. 沈向洋从微软离职,挺好的
  12. 数据资本时代:市场与公司
  13. 给高科技强国的后来者埋下的痛
  14. fastreport 横向打印多列
  15. java request修改uri,spring cloud zuul过滤器修改requestURI 忽略大小写
  16. CentOS8安装Docker
  17. 数据链路层 (一)------ 计算机网络(三)
  18. Linux命令行初体验
  19. Docker Swarm集群与Kubernetes的搭建与试用
  20. 亚马逊zm html,以编程方式登录amazon

热门文章

  1. 设置JAVA环境变量
  2. 【转】你可能不知道的Shell
  3. 前20个关于FLEX技术、源码、实例、技巧的网站.
  4. Waymo首次公开自动驾驶技术:让AI学会「危机想象力」
  5. appium+python自动化40-adb offline(5037端口被占)
  6. 调整cisco参数设置
  7. 微信公众平台开发(102) 模板消息
  8. java.lang.NullPointerException错误分析
  9. JQuery中each()的使用方法说明
  10. C# WinForm只允许运行一个窗体实例