2016-01-04 16 views
8

私は多くの場合を試みましたが、誰も私のために働いていません。私が試した:テキストに数字だけが含まれているかどうかを確認するには?

if resultTitles[indexPath.row].rangeOfCharacterFromSet(badCharacters) == nil { 
    let badCharacters = NSCharacterSet.decimalDigitCharacterSet().invertedSet 
    print("Index: \(indexPath.row)") 
} 

もどのように私は私のテキストは数値のみが含まれていることを、確認することができ、そう

if ((resultTitles[0].toInt()) != nil) { 
    print("ERROR") 
} 

にしようとしましたか?

+0

int(オプション2)に変換中、どのような応答あなたはいますか?これを試してみましたか:https://github.com/jpotts18/SwiftValidator –

+0

テキストに複数の数字を入れることができますか? – Cristik

+0

[私のコードが文字列内の数字を見つけることができないのはなぜですか?](http://stackoverflow.com/questions/34586045/why-my-code-cannot-find-digits-in-my-string) – nobism

答えて

0

これはあなたを助けるかもしれません。

let string = "536783" 
    let num = Int(string); 

    if num != nil { 
     print("Valid Integer") 
    } 
    else { 
     print("Not Valid Integer") 
    } 
+0

私は "Valid Integer"を取得します。私は "123"または "Swift"と入力すると –

+0

私はまた、 "123"の正しい結果を取得しようとすると "有効な整数"を返し、 "スイフト"は "無効な整数"を返します。 – technerd

-1

これを試してみてください:

if ([resultTitles[indexPath.row] isMatchedByRegex:@"^(?:|0|[1-9]\\d*)(?:\\.\\d*)?$"]) { 
    //Text is only numeric 
} 
else 
{ 
    //Text is not only numeric 
} 
+0

質問には「客観的な-c」ではなく「迅速」というタグが付けられています。 – Moritz

1

は遊び場で私の作品、この

let numbersTest = resultTitles[indexPath.row] 
     if let number = Int(numbersTest){ 
      print(number)//contains onlyy number 
     }else{ 
      print("notnumber")//Not number 
     } 
1

あなたの最初のオプションを試してみてください。もう一度チェックしてください。 、str = resultTitles[indexPath.row]

func isStringContainsOnlyNumbers(string: String) -> Bool { 
    return string.rangeOfCharacterFromSet(NSCharacterSet.decimalDigitCharacterSet().invertedSet) != nil 
} 

// Now let's try to use it 

let str = "Hello, playground" 

if (isStringContainsOnlyNumbers(str)) { 
    print("\(str) has illegal characters") // "Hello, playground has illegal characters" 
} 
else { 
    print("\(str) has only number") 
} 

let numStr = "332432" 

if (isStringContainsOnlyNumbers(numStr)) { 
    print("\(numStr) has illegal characters") 
} 
else { 
    print("\(numStr) has only number") // "332432 has only number\n" 
} 
+0

代わりに '=='を返す代わりに '.invertedSet'を追加する点は何ですか?それはより良いランタイムか何かですか? –

+1

"123abc"のようなケースを処理する。それはアルファベットが含まれているので、私たちの小切手を渡すべきではありませんが、数字があるかどうかを確認すると、それは数字が入っています: – Ossir

21

を想定すると、あなたは自分のStringの文字のSetが、私はこの解決策を見つける0から9

extension String { 
    var isNumeric: Bool { 
     guard self.characters.count > 0 else { return false } 
     let nums: Set<Character> = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] 
     return Set(self.characters).isSubset(of: nums) 
    } 
} 

"".isNumeric // false 
"No numbers here".isNumeric // false 
"123".isNumeric // true 
"Hello world 123".isNumeric // false 
+0

いいです。ありがとう! –

21

に文字を含むSetサブセットであるかどうかを確認する必要がありますスイフト3では、クリーナーになります

CharacterSet.decimalDigits.isSuperset(of: CharacterSet(charactersIn: yourString)) 
関連する問題