Получить диапазон из строки
Я хочу проверить, содержит ли строка только цифры. Я наткнулся на этот ответ, написанный в Objective-C.
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
.
Невозможно преобразовать тип выражения 'Range?' для ввода "NSRange"
Итак, я удалил NSRange
, и ошибка исчезла. Затем в выражении if
let range = username.rangeOfCharacterFromSet(NSCharacterSet.letterCharacterSet())
if range.location == NSNotFound {
}
Я столкнулся с другой ошибкой.
'Range? не имеет члена с именем 'location'
Помните, что переменная username
имеет тип String
not NSString
. Поэтому я полагаю, что Swift использует новый тип Range
вместо NSRange
.
Проблема, я не знаю, как использовать этот новый тип для достижения этой цели. Я тоже не встречал ни одной документации.
Кто-нибудь может помочь мне преобразовать этот код в Swift?
Спасибо.
Ответы
Ответ 1
Это пример того, как вы можете его использовать:
if let range = username.rangeOfCharacterFromSet(NSCharacterSet.letterCharacterSet()) {
println("start index: \(range.startIndex), end index: \(range.endIndex)")
}
else {
println("no data")
}