[Swift]如何使用Range截取字符串
2014-12-17 23:25
465 查看
原文:How To Find A Substring In Range of a Swift String
Swift中的Ranges和Objective-C中的NSRange有很大的不同,我发现在处理Swift中Ranges相关的问题的时候,总是要花费比我想象的更多的时间。不过,现在回过头来看看,发现Swift中的Ranges的使用还是比较合理的,但是想要正确的使用Ranges真的需要一些特别的技巧。
看一个例子,下面这段代码展示的是截取以指定的字符开头和以指定的字符结尾的子字符串:
你可以看到,不能通过指定开始结束的Int值来获取Range,需要使用String类的startIndex和endIndex属性(String.startIndex的类型不是Int),这就是Swift Ranges特别的地方。
若想获取一个超出startIndex范围的Range,你可以使用上述代码里用到的advance的函数。advance也可以用于从结尾开始计算,所以如果你需要相对于endIndex获取index,像下面的代码一样,使用一个负数即可:
不得不说,细细思量,Swift对于Ranges的使用十分干净和优雅,只要你熟悉了它的用法。
Swift中的Ranges和Objective-C中的NSRange有很大的不同,我发现在处理Swift中Ranges相关的问题的时候,总是要花费比我想象的更多的时间。不过,现在回过头来看看,发现Swift中的Ranges的使用还是比较合理的,但是想要正确的使用Ranges真的需要一些特别的技巧。
看一个例子,下面这段代码展示的是截取以指定的字符开头和以指定的字符结尾的子字符串:
var str = "Hello, playground" let rangeOfHello = Range(start: str.startIndex, end: advance(str.startIndex, 5)) let helloStr = str.substringWithRange(rangeOfHello) helloStr //"Hello"
你可以看到,不能通过指定开始结束的Int值来获取Range,需要使用String类的startIndex和endIndex属性(String.startIndex的类型不是Int),这就是Swift Ranges特别的地方。
若想获取一个超出startIndex范围的Range,你可以使用上述代码里用到的advance的函数。advance也可以用于从结尾开始计算,所以如果你需要相对于endIndex获取index,像下面的代码一样,使用一个负数即可:
let dob = "01/01/2000" let rangeOfYear = Range(start: (advance(dob.endIndex, -4)), end: dob.endIndex) let yearStr = dob.substringWithRange(rangeOfYear) yearStr // "2000"
不得不说,细细思量,Swift对于Ranges的使用十分干净和优雅,只要你熟悉了它的用法。
相关文章推荐
- Swift 如何使用Range截取字符串
- LoadRunner如何使用lr_save_var截取任意字符串长度
- bat文件中使用DOS命令如何截取字符串&如何执行“字符串命令”&获取文件文件内容并赋值给变量
- LoadRunner如何使用lr_save_var截取任意字符串长度
- swift4使用截取字符串的时候提示:string slicing subscript with a 'partial range from'.......
- swift 字符串的截取 以及 Range 的用法
- LoadRunner如何使用lr_save_var截取任意字符串长度
- swift3 截取字符串(substringwithrange)报错,it will be removed in Swift 3. Use the '..<' operator.
- 如何使用自定义的 number range objects
- javascript 如何截取字符串
- 在Delphi中如何使用RC文件中的字符串表
- javascript 如何截取字符串
- javascript 如何截取字符串
- 如何截取11个字符串?
- j2me中如何使用Calendar获取系统时间并转换成字符串格式
- [笔记]如何使用正则表达式提取字符串中的分隔元素
- [导入]如何使用 ASP.NET 实用工具加密凭据和会话状态连接字符串
- 如何把字符串当做变量名使用
- 如何使用自定义的 number range objects
- 如何使用URL字符串来传递参数到JSF程序中?