web-dev-qa-db-ja.com

文字列にintが含まれているかどうかを確認するにはどうすればよいですか? -迅速

ユーザーが入力した名前が有効なフルネームであることを確認するには、文字列にIntが含まれているかどうかを知る必要があります。ユーザーに文字のみを入力させるか、ユーザーに文字列にintがないことを確認する必要があります。入りました。助けてくれてありがとう。

19
arbel03

Swift文字列でFoundationメソッドを使用できます。これはここで行う必要があることです。NSStringは、NSCharacterSetを使用して特定のタイプの文字が存在します。これはSwiftにうまく変換されます:

_var str = "Hello, playground1"

let decimalCharacters = CharacterSet.decimalDigits

let decimalRange = str.rangeOfCharacter(from: decimalCharacters)

if decimalRange != nil {
    print("Numbers found")
}
_

入力できる文字を制限したい場合は、UITextFieldDelegateとメソッドtextField(_:shouldChangeCharactersIn:replacementString:)を実装して、最初にこれらの文字を入力できないようにする必要があります。

35
Tom Harrington

シンプルSwift 4rangeOfCharacterクラスのStringメソッドを使用したバージョン:

    let numbersRange = stringValue.rangeOfCharacter(from: .decimalDigits)
    let hasNumbers = (numbersRange != nil)
11

このメソッドは、文字列に数値が含まれているかどうかを確認するために現在使用している方法です

func doStringContainsNumber( _string : String) -> Bool{

        let numberRegEx  = ".*[0-9]+.*"
        let testCase = NSPredicate(format:"SELF MATCHES %@", numberRegEx)
        let containsNumber = testCase.evaluateWithObject(_string)

        return containsNumber
        }

文字列に数値が含まれている場合はtrue、それ以外の場合はfalseを返します。それが役に立てば幸い

7
Joker
        //Swift 3.0 to check if String contains numbers (decimal digits):


    let someString = "string 1"
    let numberCharacters = NSCharacterSet.decimalDigits

    if someString.rangeOfCharacter(from: numberCharacters) != nil
    { print("String contains numbers")}
    else if someString.rangeOfCharacter(from: numberCharacters) == nil
    { print("String doesn't contains numbers")}
3
Lukasz D
if (ContainsNumbers(str).count > 0)
{
    // Your string contains at least one number 0-9
}

func ContainsNumbers(s: String) -> [Character]
{
    return s.characters.filter { ("0"..."9").contains($0)}
}
1
Miika Pakarinen

Swift 2.3。バージョンが動作しています。

extension String
{
    func containsNumbers() -> Bool
    {
        let numberRegEx  = ".*[0-9]+.*"
        let testCase     = NSPredicate(format:"SELF MATCHES %@", numberRegEx)
        return testCase.evaluateWithObject(self)
    }
}

使用法:

//guard let firstname = textField.text else { return }
    let testStr1 = "lalalala"
    let testStr2 = "1lalalala"
    let testStr3 = "lal2lsd2l"

    print("Test 1 = \(testStr1.containsNumbers())\nTest 2 = \(testStr2.containsNumbers())\nTest 3 = \(testStr3.containsNumbers())\n")
1
Darkwonder
let numericCharSet = CharacterSet.init(charactersIn: "1234567890")

let newCharSet = CharacterSet.init(charactersIn: "~`@#$%^&*(){}[]<>?")

let sentence = "Tes#ting4 @Charact2er1Seqt"

if sentence.rangeOfCharacter(from: numericCharSet) != nil {
    print("Yes It,Have a Numeric")
    let removedSpl = sentence.components(separatedBy: newCharSet).joined()
    print(sentence.components(separatedBy: newCharSet).joined())
    print(removedSpl.components(separatedBy: numericCharSet).joined())
} 

else {
    print("No")
}
0
user10834996

NsRegularExpressionをラップして、Swiftで正規表現を使用するように仕向ける必要があります。

class Regex {
  let internalExpression: NSRegularExpression
  let pattern: String

  init(_ pattern: String) {
    self.pattern = pattern
    var error: NSError?
    self.internalExpression = NSRegularExpression(pattern: pattern, options: .CaseInsensitive, error: &error)
  }

  func test(input: String) -> Bool {
    let matches = self.internalExpression.matchesInString(input, options: nil, range:NSMakeRange(0, countElements(input)))
    return matches.count > 0
  }

}

if Regex("\\d/").test("John 2 Smith") {
  println("has a number in the name")
}

これらは http://benscheirman.com/2014/06/regex-in-Swift/ から入手しました

0
Clay Sills
//A function that checks if a string has any numbers
func stringHasNumber(_ string:String) -> Bool {
    for character in string{
        if character.isNumber{
            return true
        }
    }
    return false
}

/// Check stringHasNumber function
stringHasNumber("mhhhldiddld")
stringHasNumber("kjkdjd99900")
0
Mostafa Lotfy