iOS tip: Calculate the length of a string (if you have an emoticon, the length of the expression is 1)

Source: Internet
Author: User

When doing the project, TextField can input the expression, but the iOS expression is two characters, and then calculate the length of the string is not the same as imagined, so the use of the method will be the length of the expression to 1, the last to get the length of the string is to see the actual length.

The method uses the iOS expression code, does not understand the concrete is what, but knows those is the expression code, according to this code can find the concrete is that expression.

This method is referenced from: 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;
}

Enclosure:

iOS emoji set:

  • NSString *s = @ "This was a smiley/ue415 face";
  • Testface.text = s;
  • The/ue415 above is the expression code. More expressions are as follows:
  • /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 tip: Calculate the length of a string (if you have an emoticon, the length of the expression is 1)

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.