IOS UTF8中文字母数字 组合时长度截取
//计算总共字数和限制字数的Index位置
-(NSMutableArray *) unicodeLengthOfString: (NSString *) text
{
NSMutableArray *array = [NSMutableArray array];
float asciiLength = 0;
NSInteger maxmumShowIndex = 0;
for (NSUInteger i = 0; i < text.length; i++) {
unichar uc = [text characterAtIndex: i];
if (isalnum(uc)) {
asciiLength += 1.1;
}else{
asciiLength += isascii(uc) ? 1 : 2;
}
//计算可以显示的最大字数的Index位置
if (asciiLength /2 < _maxMumCharactors) {
maxmumShowIndex =i;
}
}
//所有的字数
NSUInteger unicodeLength = asciiLength / 2; if((NSInteger)asciiLength % 2) {
unicodeLength++;
} [array addObject:[NSNumber numberWithInteger:unicodeLength]];
[array addObject:[NSNumber numberWithInteger:maxmumShowIndex]];
return array;
}
代码解释: 设中文字数宽度为2, 非中文(isascii)宽度为1, 数字宽度为1.
所有宽度之和为R, 所有字数之和为 H, H = R / 2 + R%2,
上面的代码只是在计算刚刚超过限制字数时的Index位置。然后再截取或替换超过部分字符串。
NSArray *titleTextLengthArray = [self unicodeLengthOfString:self.titleString];
if ([[titleTextLengthArray firstObject] integerValue] >_maxMumCharactors) {
NSInteger maxMumLength = [[titleTextLengthArray lastObject] integerValue];
self.titleString = [self.titleString stringByReplacingCharactersInRange:NSMakeRange(maxMumLength, self.titleString.length-maxMumLength) withString:@"..."];
}
另外经过研究:self.titleString.length 其实是字符的个数。stringByReplacingCharactersInRange 这个方法也是针对字符数。
unichar uc = [text characterAtIndex: i]; 这个方法取的是具体的第几个字符。
IOS UTF8中文字母数字 组合时长度截取的更多相关文章
- js随机生成字母数字组合的字符串 随机动画数字
效果描述: 附件中只有一个index.html文件有效 其中包含css以及html两部分内容 纯js生成的几个随机数字 每次都不重复,点击按钮后再次切换 使用方法: 1.将css样式引入到你的网页中 ...
- JS生成随机的由字母数字组合的字符串
前言 最近有个需求,是需要生成3-32位长度的字母数字组合的随机字符串,另一个是生成43位随机字符串. 方法一 奇妙的写法 1 Math.random().toString(36).substr( ...
- 生成一个字母数字组合的n位随机码、随机数、随机字符串
package com.cms.util; /** * 生成一个字母数字组合的n位随机码 * @author abc * */ public class CodeUtil { // private f ...
- 将Long类型转为字母数字组合的jar包---Hashids
在设计数据库时,我有时喜欢使用自增Id,而不是uuid,但是在面对终端用户时,直接暴露id不是一个好的行为. 经过查询,可以使用 Hashids 这个jar包将id转为类似YouTube的大小写字母和 ...
- PHP字母数字验证码和中文验证码
1:字母数字组合的验证码 HTML代码: 验证码:<input type="text" name="code"> <img onclick=& ...
- 通过JS生成由字母与数字组合的随机字符串
在项目中可能需要随机生成字母数字组成的字符,如生成3-32位长度的字母数字组合的随机字符串(位数不固定)或者生成43位随机字符串(位数固定) 使用Math.random()与toString()方法的 ...
- js产生一个随机的字符串数字组合
/** * 随机生成字符串 * @param randomFlag 产生任意长度随机字母数字组合 * @param min 任意长度最小位[固定位数] * @param max 任意长度最大位 * @ ...
- JAVAWEB项目实现验证码中文、英文、数字组合
验证码基础 一.什么是验证码及它的作用 :验证码为全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计算机的公共全自动程序,这个问题可以由计算机生成并评判,但是必须只有人类才能解答.可以防止恶意 ...
- PHP中生成随机字符串,数字+大小写字母随机组合
简单的生成随机字符串: /* * 生成随机字符串 * * $length 字符串长度 */ function random_str($length) { // 密码字符集,可任意添加你需要的字符 $c ...
随机推荐
- 探究requestDisallowInterceptTouchEvent失效的原因
昨天在用requestDisallowInterceptTouchEvent的时候,发如今设置了requestDisallowInterceptTouchEvent(true)之后,父View的onI ...
- python自定义函数大全
写的零碎的python脚本太多了,到一定阶段就会出现一个问题,即以前写过的脚本找不到了,现在临时要用,还得再重写一遍,这就非常难受了,代码不能复用. 还好我有一个比较好的习惯,我喜欢把python脚本 ...
- xcode引入第三方静态类库 duplicate symbol _OBJC_XXX 重复编译错误
xcode引入第三方静态类库 duplicate symbol _OBJC_XXX 重复编译错误 一:场景 xcode 同时引入了 libA.a, libB.a 两个静态类库,如果 这两个静态类库之中 ...
- js生成验证码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 编译maxscale
编译maxscale,需要依赖mariadb版本的MySQL.有自己的版本就是任性啊
- C++语言中cin cin.getline cin.get getline gets getchar 的用法实例
#include <iostream> #include <string> using namespace std; //关于cin cin.getline cin.get g ...
- 设置westorm自动代码提示
打开settings 然后在js文件下 打出co 按TAB键就出现了color了
- Java的内存回收机制
原文出处: cnblogs-小学徒V 在Java中,它的内存管理包括两方面:内存分配(创建Java对象的时候)和内存回收,这两方面工作都是由JVM自动完成的,降低了Java程序员的学习难度,避免了像C ...
- javascript常用函数(1):jquery操作select 基本操作
$(this).children('option:selected').val();//这就是selected的值 $("#charCity").empty();//内容清空: j ...
- cf(#div1 A. Dreamoon and Sums)(数论)
A. Dreamoon and Sums time limit per test 1.5 seconds memory limit per test 256 megabytes input stand ...