Ios 从字符串中获取范围
我想检查字符串是否只包含数字。我找到了用Objective-C写的答案Ios 从字符串中获取范围,ios,swift,range,ios8,nsrange,Ios,Swift,Range,Ios8,Nsrange,我想检查字符串是否只包含数字。我找到了用Objective-C写的答案 NSRange range = [myTextField.text rangeOfCharacterFromSet:[NSCharacterSet letterCharacterSet]]; if(range.location == NSNotFound) { // then it is numeric only } 我试着把它改成斯威夫特 let range: NSRange = username.rangeOf
NSRange range = [myTextField.text rangeOfCharacterFromSet:[NSCharacterSet letterCharacterSet]];
if(range.location == NSNotFound) {
// then it is numeric only
}
我试着把它改成斯威夫特
let range: NSRange = username.rangeOfCharacterFromSet(NSCharacterSet.letterCharacterSet())
我遇到的第一个错误是在分配类型NSRange
时
无法将表达式的类型“Range”转换为类型“NSRange”
因此,我删除了NSRange
,错误消失了。然后在if语句中
let range = username.rangeOfCharacterFromSet(NSCharacterSet.letterCharacterSet())
if range.location == NSNotFound {
}
我遇到了另一个错误
“范围”没有名为“位置”的成员。
请注意,变量username
的类型为String
而不是NSString
。因此,我猜Swift使用了新的范围
类型,而不是NSRange
问题是我不知道如何使用这种新类型来实现这一点。我也没有找到任何关于它的文档
有人能帮我把这个代码转换成Swift吗
谢谢。这是一个如何使用它的示例:
if let range = username.rangeOfCharacterFromSet(NSCharacterSet.letterCharacterSet()) {
println("start index: \(range.startIndex), end index: \(range.endIndex)")
}
else {
println("no data")
}
有没有办法将其与
NSNotFound
进行比较?如果我这样做让range=username.rangeOfCharacterFromSet(NSCharacterSet.letterCharacterSet())==NSNotFound
我得到这个错误,“Int”不能转换为“range”,else语句(无数据)与“no found”等价。明白了吗。非常感谢。是的,我找到了一个解决方案,我正在使用这项工作来验证字符串,我正在使用代码var isValid=true let name=self.TrimText(nameText)作为NSString let nameSet=NSCharacterSet(charactersInString:“abcdefghijklmnopqrstuvxyzabefghijklkmnopqrstuvxyz-”)let set=nameSet.inversedset let range=name.rangeOfCharacterFromSet(set)let isInvalidName=range.location!=NSNotFound如果(isInvalidName){isValid=false}^我认为他没有抓住要点,您不需要Swift中的range.location
(norNSNotFound
)。仅上面的else
子句就意味着没有找到它。