我想检查一个字符串是否只包含数字。我遇到了用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吗?
谢谢。
答案 0 :(得分:22)
这是一个如何使用它的例子:
if let range = username.rangeOfCharacterFromSet(NSCharacterSet.letterCharacterSet()) {
println("start index: \(range.startIndex), end index: \(range.endIndex)")
}
else {
println("no data")
}