码迷,mamicode.com
首页 > 编程语言 > 详细

[Swift]如何使用Range截取子字符串

时间:2014-12-18 07:00:04      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:http   ar   os   使用   sp   strong   on   art   问题   

原文:How To Find A Substring In Range of a Swift String

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类的startIndexendIndex属性(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截取子字符串

标签:http   ar   os   使用   sp   strong   on   art   问题   

原文地址:http://my.oschina.net/notting/blog/357410

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!