如何在Swift中使用rangeOfString

时间:2015-03-29 08:09:16

标签: ios swift

假设我有一个字符串" 10.9.1.1",我想得到子字符串" 10.9"。我怎样才能做到这一点? 到目前为止,我有以下内容:

var str = "10.9.1.1"
let range = str.rangeOfString(".",options: .RegularExpressionSearch)!
let rangeOfDecimal = Range(start:str.startIndex,end:range.endIndex)
var subStr = str.subStringWithRange(rangeOfDecimal)

但这只会返回10。

1 个答案:

答案 0 :(得分:1)

实际上你的代码会返回" 1"只是因为"。"在一个普通的 表达模式匹配任何字符。

正确的模式是

\d+    one ore more digits
\.     a literal dot
\d+    one or more digits

在Swift字符串中,您必须将反斜杠转义为"\\"

let str = "10.9.1.1"
if let range = str.rangeOfString("\\d+\\.\\d+",options: .RegularExpressionSearch) {
    let subStr = str.substringWithRange(range)
    println(subStr) // "10.9"
}