2015-10-31 3 views
0

У меня есть массив: NSString, которые выглядят какSwift NSString проверка чисел

[X1],[Tester],[123],[456],[0] 

Теперь я должен проверить, если позиция (всегда то же самое) является числом или строкой
Так я пытался

var test = Array[0].intValue 
     print(test) 

но, как [0] является строкой, она не должна возвращать 0, поскольку она также может быть [4]

Есть ли способ проверить, является ли NSString числом только (для возврата true/false будет достаточно)?

полный пример кода

var Array: [NSString] = ["X1","Fabian","100","200","not avaible"] 
/* could also be Array: 
var Array0: [NSString] = ["X2","Timo","200","300","300"] 
*/ 
//need to check if Array[4] is a number or not so its "text" or "number" 

var test = Array[4].intValue 
print(test) 

//return 0 
+0

Пожалуйста, покажите свой точный код, что такое ввод (не в пояснительных терминах, а в кодовых терминах) - что в настоящее время происходит и чего именно вы хотите достичь? – luk2302

+0

с полным кодом –

+0

Возможный дубликат [Как проверить строку или номер] (http://stackoverflow.com/questions/26545166/how-to-check-is-a-string-or-number) – luk2302

ответ

3

В swift2: Вы можете использовать Int(<your variable>) возвращает номер, если он может использовать, иначе возвращать ноль, и вы можете проверить против возвращаемого значения.

пример использования необязательное условие:

let s = "Some String" 
if let _ = Int(s) { 
    print("it is a number") 
}else{ 
    print("it is not a number") 
} 

этот пример должен вернуть «не число»

0

Если вы хотите собрать индексы, где элементы массива являются числами, вы можете использовать отображение и возвращение индексы, в которых элемент может быть преобразован в число.

var Array0: [NSString] = ["X1","Fabian","100","200","not avaible"] 
var numbersAt: [Int] = Array0.enumerate().map{ (index, number) in 
    return (Int(number as String) == nil ? -1 : index) 
} 
print("indexes: \(numbersAt)") //numbersAt will have the indexes unless they're not numbers in which case it'll have -1 

//Another option will be to filter the array and collect only the number strings 
var numbers = Array0.filter { Int($0 as String) != nil } 
print("numbers: \(numbers)") 
Смежные вопросы