Подтвердить что ты не робот

Получить диапазон из строки

Я хочу проверить, содержит ли строка только цифры. Я наткнулся на этот ответ, написанный в 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?

Спасибо.

4b9b3361

Ответ 1

Это пример того, как вы можете его использовать:

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