富文本,NSAttributedString,当需要改变的内容有相同的时候的解决方法
2024-10-29 15:33:46
在开发的过程中可能会遇到富文本展示,例如:一行文本,前面是题后面是答案,题和答案用不同的颜色字体,但是答案的内容在题总也有,这时候用平常的方法就会展示错误,因为把题中的内容改变了颜色二实际答案却没有改变颜色。需要把相同内容的rang放到数组里然后取最后一个rang就可以了。提供一个获得相同内容的rang的数组。
#pragma mark - 获取某个子字符串在某个总字符串中位置数组
/**
* 获取某个字符串中子字符串的位置数组
*
* @param totalString 总的字符串
* @param subString 子字符串
*
* @return 位置数组
*/
+ (NSMutableArray *)ls_getRangeWithTotalString:(NSString *)totalString SubString:(NSString *)subString { NSMutableArray *arrayRanges = [NSMutableArray array]; if (subString == nil && [subString isEqualToString:@""]) {
return nil;
} NSRange rang = [totalString rangeOfString:subString]; if (rang.location != NSNotFound && rang.length != 0) { [arrayRanges addObject:[NSNumber valueWithRange:rang]]; NSRange rang1 = {0,0};
NSInteger location = 0;
NSInteger length = 0; for (int i = 0;; i++) { if (0 == i) { location = rang.location + rang.length;
length = totalString.length - rang.location - rang.length;
rang1 = NSMakeRange(location, length);
} else { location = rang1.location + rang1.length;
length = totalString.length - rang1.location - rang1.length;
rang1 = NSMakeRange(location, length);
} rang1 = [totalString rangeOfString:subString options:NSCaseInsensitiveSearch range:rang1]; if (rang1.location == NSNotFound && rang1.length == 0) { break;
} else { [arrayRanges addObject:[NSNumber valueWithRange:rang1]];
}
} return arrayRanges;
} return nil;
}
最新文章
- Linux Command Line 笔记(1)
- OFA &; OMF
- 2015-2016-2 《Java程序设计》 学生博客及Git@OSC 链接
- FluentData Mysql分页的一个BUG
- 虚拟化_KVM
- 移动端翻页插件dropload.js(支持Zepto和jQuery)
- Google Dremel 原理 - 如何能3秒分析1PB
- linux下的启停脚本
- sql server 索引阐述系列七 索引填充因子与碎片
- Vue 使用swiper4导致ie或手机浏览器打开空白的问题
- Android学习之基础知识四-Activity活动3讲(Intent的使用)
- Linux permission denied解决方法
- 【ibatis】IBatis返回map类型数据
- [SharePoint 2010] SharePoint 2010 部署、收回和删除解决方案----STSADM和PowerShell
- Zabbix日常监控(win_agent方式)
- Django 自定义模板标签和过滤器
- mysql主从复制(简单直观)
- cocos2d-x常用工具
- mysql出现 Unknown column 'bname' in 'where clause'和Unknown column 'bid' in 'field list'
- mysql启动服务出错--发生系统错误 1067。
热门文章
- 关于a.b和a[b]的区别
- MongoDB基础之十 shared分片
- esri-leaflet入门教程(2)-地图的HelloWorld
- ArcGIS制图技巧系列(1)还原真实的植被
- window nfs 服务端配置安装
- Python学习--17 进程和线程
- 读书笔记 effective c++ Item3 在任何可能的时候使用 const
- 基于C++11的线程池,简洁且可以带任意多的参数
- Android jni 编程1(对基本类型字符串的操作)
- 移动端开发(一. Viewport(视窗))