从字符串中获取范围

时间:2014-08-11 10:32:06

标签: ios swift range ios8 nsrange

我想检查一个字符串是否只包含数字。我遇到了用Objective-C编写的this答案。

NSRange range = [myTextField.text rangeOfCharacterFromSet:[NSCharacterSet letterCharacterSet]];
if(range.location == NSNotFound) {
    // then it is numeric only
}

我尝试将其转换为Swift。

let range: NSRange = username.rangeOfCharacterFromSet(NSCharacterSet.letterCharacterSet())

我遇到的第一个错误是我分配了类型NSRange

无法转换表达式'范围?'输入' NSRange'

所以我删除了NSRange,错误就消失了。然后在if语句中,

let range = username.rangeOfCharacterFromSet(NSCharacterSet.letterCharacterSet())
if range.location == NSNotFound {

}

我遇到了另一个错误。

'范围&#39?;没有名为' location'

的成员

请注意,变量username的类型为String而不是NSString。所以我猜Swift使用新的Range类型而不是NSRange

问题我不知道如何使用这种新类型来实现这一目标。我也没有遇到任何文档。

有人可以帮我把这段代码转换成Swift吗?

谢谢。

1 个答案:

答案 0 :(得分:22)

这是一个如何使用它的例子:

if let range = username.rangeOfCharacterFromSet(NSCharacterSet.letterCharacterSet()) {
    println("start index: \(range.startIndex), end index: \(range.endIndex)")
}
else {
    println("no data")
}