iOS小知识:计算字符串长度(如果有表情,表情的长度为1)
在做项目的时候,textField能够输入表情,但是iOS的表情是占两个字符的,再计算字符串长度的时候就和想象的不一样了,所以用了次方法会将表情的长度转成1,最后得到的字符串的长度就是能看到的实际的长度。
方法中用到了iOS的表情编码,看不懂具体是什么,但是知道那些就是表情的编码,根据这个编码就能够找到具体是那个表情了。
此方法参考自:http://blog.csdn.net/liujinlongxa/article/details/44207003
- (NSInteger)getStringLengthWithString:(NSString *)string
{
__block NSInteger stringLength = 0;
[string enumerateSubstringsInRange:NSMakeRange(0, [string length])
options:NSStringEnumerationByComposedCharacterSequences
usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop)
{
const unichar hs = [substring characterAtIndex:0];
if (0xd800 <= hs && hs <= 0xdbff)
{
if (substring.length > 1)
{
const unichar ls = [substring characterAtIndex:1];
const int uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;
if (0x1d000 <= uc && uc <= 0x1f77f)
{
stringLength += 1;
}
else
{
stringLength += 1;
}
}
else
{
stringLength += 1;
}
} else if (substring.length > 1)
{
const unichar ls = [substring characterAtIndex:1];
if (ls == 0x20e3)
{
stringLength += 1;
}
else
{
stringLength += 1;
}
} else {
if (0x2100 <= hs && hs <= 0x27ff)
{
stringLength += 1;
}
else if (0x2B05 <= hs && hs <= 0x2b07)
{
stringLength += 1;
}
else if (0x2934 <= hs && hs <= 0x2935)
{
stringLength += 1;
}
else if (0x3297 <= hs && hs <= 0x3299)
{
stringLength += 1;
}
else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50)
{
stringLength += 1;
}
else
{
stringLength += 1;
}
}
}];
return stringLength;
}
附文:
iOS表情编码集:
- NSString *s = @"This is a smiley /ue415 face";
- testFace.text = s;
- 上面的/ue415就是表情编码。更多的表情如下:
- /ue415 /ue056 /ue057 /ue414 /ue405 /ue106 /ue418
- /ue417 /ue40d /ue40a /ue404 /ue105 /ue409 /ue40e
- /ue402 /ue108 /ue403 /ue058 /ue407 /ue401 /ue40f
- /ue40b /ue406 /ue413 /ue411 /ue412 /ue410 /ue107
- /ue059 /ue416 /ue408 /ue40c /ue11a /ue10c /ue32c
- /ue32a /ue32d /ue328 /ue32b /ue022 /ue023 /ue327
- /ue329 /ue32e /ue32f /ue335 /ue334 /ue021 /ue337
- /ue020 /ue336 /ue13c /ue330 /ue331 /ue326 /ue03e
- /ue11d /ue05a /ue00e /ue421 /ue420 /ue00d /ue010
- /ue011 /ue41e /ue012 /ue422 /ue22e /ue22f /ue231
- /ue230 /ue427 /ue41d /ue00f /ue41f /ue14c /ue201
- /ue115 /ue428 /ue51f /ue429 /ue424 /ue423 /ue253
- /ue426 /ue111 /ue425 /ue31e /ue31f /ue31d /ue001
- /ue002 /ue005 /ue004 /ue51a /ue519 /ue518 /ue515
- /ue516 /ue517 /ue51b /ue152 /ue04e /ue51c /ue51e
- /ue11c /ue536 /ue003 /ue41c /ue41b /ue419 /ue41a
- /ue04a /ue04b /ue049 /ue048 /ue04c /ue13d /ue443
- /ue43e /ue04f /ue052 /ue053 /ue524 /ue52c /ue52a
- /ue531 /ue050 /ue527 /ue051 /ue10b /ue52b /ue52f
- /ue528 /ue01a /ue134 /ue530 /ue529 /ue526 /ue52d
- /ue521 /ue523 /ue52e /ue055 /ue525 /ue10a /ue109
- /ue522 /ue019 /ue054 /ue520 /ue306 /ue030 /ue304
- /ue110 /ue032 /ue305 /ue303 /ue118 /ue447 /ue119
- /ue307 /ue308 /ue444 /ue441
- /ue436 /ue437 /ue438 /ue43a /ue439 /ue43b /ue117
- /ue440 /ue442 /ue446 /ue445 /ue11b /ue448 /ue033
- /ue112 /ue325 /ue312 /ue310 /ue126 /ue127 /ue008
- /ue03d /ue00c /ue12a /ue00a /ue00b /ue009 /ue316
- /ue129 /ue141 /ue142 /ue317 /ue128 /ue14b /ue211
- /ue114 /ue145 /ue144 /ue03f /ue313 /ue116 /ue10f
- /ue104 /ue103 /ue101 /ue102 /ue13f /ue140 /ue11f
- /ue12f /ue031 /ue30e /ue311 /ue113 /ue30f /ue13b
- /ue42b /ue42a /ue018 /ue016 /ue015 /ue014 /ue42c
- /ue42d /ue017 /ue013 /ue20e /ue20c /ue20f /ue20d
- /ue131 /ue12b /ue130 /ue12d /ue324 /ue301 /ue148
- /ue502 /ue03c /ue30a /ue042 /ue040 /ue041 /ue12c
- /ue007 /ue31a /ue13e /ue31b /ue006 /ue302 /ue319
- /ue321 /ue322 /ue314 /ue503 /ue10e /ue318 /ue43c
- /ue11e /ue323 /ue31c /ue034 /ue035 /ue045 /ue338
- /ue047 /ue30c /ue044 /ue30b /ue043 /ue120 /ue33b
- /ue33f /ue341 /ue34c /ue344 /ue342 /ue33d /ue33e
- /ue340 /ue34d /ue339 /ue147 /ue343 /ue33c /ue33a
- /ue43f /ue34b /ue046 /ue345 /ue346 /ue348 /ue347
- /ue34a /ue349
- /ue036 /ue157 /ue038 /ue153 /ue155 /ue14d /ue156
- /ue501 /ue158 /ue43d /ue037 /ue504 /ue44a /ue146
- /ue50a /ue505 /ue506 /ue122 /ue508 /ue509 /ue03b
- /ue04d /ue449 /ue44b /ue51d /ue44c /ue124 /ue121
- /ue433 /ue202 /ue135 /ue01c /ue01d /ue10d /ue136
- /ue42e /ue01b /ue15a /ue159 /ue432 /ue430 /ue431
- /ue42f /ue01e /ue039 /ue435 /ue01f /ue125 /ue03a
- /ue14e /ue252 /ue137 /ue209 /ue154 /ue133 /ue150
- /ue320 /ue123 /ue132 /ue143 /ue50b /ue514 /ue513
- /ue50c /ue50d /ue511 /ue50f /ue512 /ue510 /ue50e
- /ue21c /ue21d /ue21e /ue21f /ue220 /ue221 /ue222
- /ue223 /ue224 /ue225 /ue210 /ue232 /ue233 /ue235
- /ue234 /ue236 /ue237 /ue238 /ue239 /ue23b /ue23a
- /ue23d /ue23c /ue24d /ue212 /ue24c /ue213 /ue214
- /ue507 /ue203 /ue20b /ue22a /ue22b /ue226 /ue227
- /ue22c /ue22d /ue215 /ue216 /ue217 /ue218 /ue228
- /ue151 /ue138 /ue139 /ue13a /ue208 /ue14f /ue20a
- /ue434 /ue309 /ue315 /ue30d /ue207 /ue229 /ue206
- /ue205 /ue204 /ue12e /ue250 /ue251 /ue14a /ue149
- /ue23f /ue240 /ue241 /ue242 /ue243 /ue244 /ue245
- /ue246 /ue247 /ue248 /ue249 /ue24a /ue24b /ue23e
- /ue532 /ue533 /ue534 /ue535 /ue21a /ue219 /ue21b
- /ue02f /ue024 /ue025 /ue026 /ue027 /ue028 /ue029
- /ue02a /ue02b /ue02c /ue02d /ue02e /ue332 /ue333
- /ue24e /ue24f /ue537
iOS小知识:计算字符串长度(如果有表情,表情的长度为1)的更多相关文章
- iOS小知识:使UIButton中的图片和文字实现左对齐
UIButton setImage 和 setTitle之后,默认的 image和title 对齐方式是居中, 由于 title 长度不固定,所以如果要几个这样有image有title的按钮纵向排列对 ...
- iOS 小知识
iOS 各版本: http://www.pig66.com/2018/145_1021/17357553.html
- IOS小知识纪录
1.scrollView缩放 #import "ViewController.h" @interface ViewController () <UIScrollViewDel ...
- iOS 小知识-tips
--->1<--- arc的项目中使用非arc代码,则添加-fno-objc-arc: 非arc项目中使用arc代码,则添加-fobjc-arc. --->2<--- 实用的类 ...
- iOS 小知识 - #if , #ifdef , #ifndef.
Q : 在项目的 .h 文件中, #ifndef XXX_h #define XXX_h //程序段1 #endif /* XXX_h */ 的作用? A : 如果 XXX.h 不存在,就引入 XX ...
- ios 计算字符串长度<转>
- (int)textLength:(NSString *)text//计算字符串长度 { float number = 0.0; for (int index = 0; index ...
- C# 计算字符串在控制台中的显示长度
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
- C#计算字符串长度,汉字算两个字符
在C#中的字符串类String中,有个Length属性表示字符串的长度,但该字段返回的是字符的个数,如果字符串中含有中文字符的话,一个汉字占用两个字符的长度,此时获取的长度就不够精确,当然也看具体业务 ...
- NET MVC全局异常处理(一) 【转载】网站遭遇DDoS攻击怎么办 使用 HttpRequester 更方便的发起 HTTP 请求 C#文件流。 Url的Base64编码以及解码 C#计算字符串长度,汉字算两个字符 2019周笔记(2.18-2.23) Mysql语句中当前时间不能直接使用C#中的Date.Now传输 Mysql中Count函数的正确使用
NET MVC全局异常处理(一) 目录 .NET MVC全局异常处理 IIS配置 静态错误页配置 .NET错误页配置 程序设置 全局异常配置 .NET MVC全局异常处理 一直知道有.NET有相关 ...
随机推荐
- Java基础知识笔记(八:集合类)
目录 1 集合类简介 2 List介绍及简单使用 2.1 LinkedList介绍及简单使用 2.2 ArrayList介绍及简单使用 2.3 Vector介绍及简单使用 2.3.1 S ...
- PHP求职宝典系列——PHP Web 编程篇
PHP Web 编程篇 form表单 1.简述 POST 和 GET 传输的最大容量分别是多少? GET 方法提交的表单数据被附加到 URL 上,并作为URL 的一部分发送到服务器端. URL 的长度 ...
- SCNU ACM 2016新生赛初赛 解题报告
新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...
- 第9章 Shell基础(1)_Shell简介和脚本执行方式
1. Shell概述 1.1 Shell简介 (1)Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至是编 ...
- canvas贝塞尔曲线 - 1
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAvEAAAIcCAIAAADwgGbqAAAgAElEQVR4nOy9a4wb55nn20kOZhq7o8
- UOJ #58 【WC2013】 糖果公园
题目链接:糖果公园 听说这是一道树上莫队的入门题,于是我就去写了--顺便复习了一下莫队的各种姿势. 首先,我们要在树上使用莫队,那么就需要像序列一样给树分块.这个分块的过程就是王室联邦这道题(vfle ...
- python2.7高级编程 笔记二(Python中的描述符)
Python中包含了许多内建的语言特性,它们使得代码简洁且易于理解.这些特性包括列表/集合/字典推导式,属性(property).以及装饰器(decorator).对于大部分特性来说,这些" ...
- [LeetCode] Alien Dictionary 另类字典
There is a new alien language which uses the latin alphabet. However, the order among letters are un ...
- [LeetCode] Insertion Sort List 链表插入排序
Sort a linked list using insertion sort. 链表的插入排序实现原理很简单,就是一个元素一个元素的从原链表中取出来,然后按顺序插入到新链表中,时间复杂度为O(n2) ...
- modelsim实用教程--前言
前言 Modelsim是一款专业的仿真软件,特别是在Quartus II 11.0之后的版本,都没有配套自身的仿真软件,所以Modelsim成了在FPGA设计流程中的进行功能仿真的首选仿真软件之一. ...