最近项目再使用swift重构,遇到Range和NSRange转换的问题,这里记录下:

因为要使用NSRange,所以有了下面这段代码,将String转换为NSString后调用 range(of searchString: String) -> NSRange

这种处理方法其实就是使用到了OC的方法了

let textStr = "登陆及代表同意《用户协议》与《隐私政策》"
//获取NSRange
let range = NSString(string: textStr).range(of: "《隐私政策》")

以下为其他转换方法:

extension String {//Range转换为NSRangefunc toNSRange(_ range: Range<String.Index>) -> NSRange {guard let from = range.lowerBound.samePosition(in: utf16), let to = range.upperBound.samePosition(in: utf16) else {return NSMakeRange(0, 0)}return NSMakeRange(utf16.distance(from: utf16.startIndex, to: from), utf16.distance(from: from, to: to))}//NSRange转换为Rangefunc toRange(_ range: NSRange) -> Range<String.Index>? {guard let from16 = utf16.index(utf16.startIndex, offsetBy: range.location, limitedBy: utf16.endIndex) else { return nil }guard let to16 = utf16.index(from16, offsetBy: range.length, limitedBy: utf16.endIndex) else { return nil }guard let from = String.Index(from16, within: self) else { return nil }guard let to = String.Index(to16, within: self) else { return nil }return from ..< to}}

使用如下:

let textStr = "登陆及代表同意《用户协议》与《隐私政策》"
//Range->NSRange
let nsrange = textStr.toNSRange(linkStr.range(of: "《隐私政策》")
//NSRange->Range
let range = textStr.toRange(nsrange)

Swift中NSRange和Range的转换相关推荐

  1. nsdata是java什么类型_Swift中基本数据类型与NSData转换

    Swift中基本数据类型与NSData转换 最近由于程序的需要,要与JAVA的服务端进行Socket的交互,那么这就牵涉到了数据的交互.Socket的数据交互一般都是直接采用二进制Bytes的方式来传 ...

  2. Swift 使用NSRange 查找字符多次出现的位置处理

    NSRange是个使用频率比较高的对象,尤其是在设置富文本(AttributedString)的地方.自带的 rangeOfString 就可以查找某字符所在字符串中的位置.但如果要获取多次出现的位置 ...

  3. Swift中string转换float/double的若干方法

    在Swift中将String类型的字符串转换成floate或double的若干方法: 1._bridgeToObjectiveC() let version: String = UIDevice.cu ...

  4. 探索 Swift 中的 MVC-N 模式

    作者:Marcus Zarra(twitter:@mzarra) Marcus 将会为大家介绍一种设计模式,他曾经在那些需要从互联网进行大量频繁数据请求的 iOS 应用当中使用此设计模式.这个设计采用 ...

  5. swift设置启动图不现实_如何通过装饰房屋来开始在Swift中使用增强现实

    swift设置启动图不现实 by Ranadhir Dey 由Ranadhir Dey 如何通过装饰房屋来开始在Swift中使用增强现实 (How to get started with augmen ...

  6. swift视图容器_如何使用IBDesignable在Swift中创建漂亮的,可重复使用的渐变视图...

    swift视图容器 by Lee Dowthwaite 通过李道思韦特 如何使用IBDesignable在Swift中创建漂亮的,可重复使用的渐变视图 (How to create a beautif ...

  7. GIS中的坐标系定义与转换

    GIS中的坐标系定义与转换 青岛海洋地质研究所 戴勤奋 2002-3-27 14:22:47 ----------------------------------------------------- ...

  8. 在幕后看看Swift中的Map,Filter和Reduce的实现

    一个函数接受一些输入,对它做一些事情并创建一个输出.功能有签名和正文.如果为函数提供相同的输入,则始终获得相同的输出.简而言之,这是函数的定义. 现在我们将通过仔细研究它们来讨论更多功能.我们将在Sw ...

  9. Swift中使用正则表达式

    Swift中使用正则表达式 环境:swift3 xcode8 一.什么时候我们需要使用正则表达式 1.判断一些字符是否符合所需要求: 2.用于检索文本中所需字段. 二.正则表达式的语法 正则表达式的创 ...

最新文章

  1. java reflectionutils_ReflectionUtils工具类-装载
  2. Mongodb python驱动教程
  3. C++ Primer 5th笔记(chap 17 标准库特殊设施)输出补白
  4. 汇编语言中常见的标志位: CF, PF, AF, ZF, SF,TF,IF,DF, OF
  5. SqlLite在Net中的使用
  6. GC详解及Minor GC和Full GC触发条件
  7. 表格求和和计算机不一致6,(电子行业企业管理)计算机电子表格公式应用常见错误及处理(6页)-原创力文档...
  8. 【Altera SoC体验之旅】+ 正式开启OpenCL模式
  9. Gradle下载及安装以及Idea项目配置
  10. actived生命周期_vue组件的生命周期和执行过程
  11. Chrome离线安装CRX插件方法
  12. termux获取sd卡读写权限_原来是用错了读卡器,雷克沙lexar 1667X 真实读写性能测试...
  13. Android 更改鼠标样式
  14. 4.124.13天梯赛补题
  15. 源站IP暴露了怎么自查?
  16. jquery选择器连续选择_jQuery选择器简介
  17. 中国信号调理器行业市场供需与战略研究报告
  18. 在c语言中我叫做符号变量,问渠网-C语言基础-第一节 关键字符号与变量
  19. 面向高维稀疏数据场景,阿里妈妈宣布开源XDL深度学习框架
  20. 线上打假遭遇多重困境 专家建言依靠“大数据”打假

热门文章

  1. Socket/ServerSocket 选项
  2. datatable自动增加序号
  3. 如何用php实现分页效果
  4. SQL Server日志清除的两种方法 .
  5. CSS入门-五个简单,但有用的CSS属性
  6. 博问问题内容页面的前端优化
  7. Linux环境PHP7.0安装
  8. http header头设置反向代理不缓存
  9. Apache服务器下使用 ab 命令进行压力测试
  10. ADO.NET 2.0 中的架构