Расширение для проверки, является ли NSString числовым в Swift - PullRequest
0 голосов
/ 30 марта 2019

Можно проверить, является ли строка числовой в быстром, используя:

extension String  {
    var isNumber: Bool {
        return !isEmpty && rangeOfCharacter(from: CharacterSet.decimalDigits.inverted) == nil
    }
}

Есть ли аналогичный способ проверить, является ли NSString числовым?Я поиграл с вышеупомянутым, но не могу ничего скомпилировать.

Ответы [ 3 ]

2 голосов
/ 30 марта 2019

Вам необходимо проверить, больше ли длина, чем 0, и равно ли местоположение диапазона NSNotFound:

extension NSString  {
    var isNumber: Bool {
        return length > 0 && rangeOfCharacter(from: CharacterSet.decimalDigits.inverted).location == NSNotFound
    }
}

("1" as NSString).isNumber  // true

("a" as NSString).isNumber // false
0 голосов
/ 30 марта 2019

Согласно документации Apple:

Строка - это последовательность символов, например «Swift», которая образует коллекцию. Строки в Swift корректны в Юникоде и нечувствительны к локали, и предназначены для повышения эффективности Тип String соединяет класс Objective C с классом NSString и обеспечивает взаимодействие с функциями C, работающими со строками.

Так что вы можете просто набрать приведение и использовать тот же метод.

0 голосов
/ 30 марта 2019

Вы можете создать функцию в расширении

extension NSString  {
func isNumber() -> Bool {
    let str: String = self as String
    return Int(str) != nil || Double(str) != nil
    }
}
let x: NSString = "32"
x.isNumber() // true
...