String 如何检查字符串是否包含int-敏捷的

String 如何检查字符串是否包含int-敏捷的,string,swift,keyboard,int,contains,String,Swift,Keyboard,Int,Contains,我需要知道字符串是否包含Int,以确保用户输入的名称是有效的全名, 为此,我需要使用户类型仅为chars,或者使用户输入的字符串中没有int有效。 谢谢你的帮助 您需要通过包装其nsRegularExpression来欺骗Swift使用Regex class Regex { let internalExpression: NSRegularExpression let pattern: String init(_ pattern: String) { self.patter

我需要知道字符串是否包含Int,以确保用户输入的名称是有效的全名, 为此,我需要使用户类型仅为chars,或者使用户输入的字符串中没有int有效。
谢谢你的帮助

您需要通过包装其nsRegularExpression来欺骗Swift使用Regex

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
  }
}


<>我从

得到了,你可以用快速字符串的基础方法,这就是你应该在这里做的。code>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(\uu:shouldChangeCharactersIn:replacementString:)
方法,以防止人们首先键入这些字符。

我现在使用此方法来检查字符串是否包含数字

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。希望它能帮上忙

Swift 2.3。版本工作

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)}
}
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")

使用
String
类中的
rangeOfCharacter
方法的简单Swift 4版本:

    let numbersRange = stringValue.rangeOfCharacter(from: .decimalDigits)
    let hasNumbers = (numbersRange != nil)
让numericCharSet=CharacterSet.init(charactersIn:“1234567890”)
设newCharSet=CharacterSet.init(charactersIn:“~`@#$%^&*(){}[]?”)
让句子=“Tes#ting4@Charact2er1Seqt”
如果句子.rangeOfCharacter(from:numericCharSet)!=零{
打印(“是的,有一个数字”)
let removedSpl=句子.components(separatedBy:newCharSet).joined()
打印(句子.components(separatedBy:newCharSet.joined())
打印(移除的SPL.components(分隔符:numericCharSet).joined())
} 
否则{
打印(“否”)
}

转换为
NSString
,您可以使用
string.containssstring(otherString)
只检查它是否包含数字。为什么只检查整数?将➽, ⨕, 可能重复。问题是关于Swift编程语言,而不是JavaScript。顺便说一句,字母比a-z、a-z多。那么Ä或é呢?虽然这回答了在字符串中定位数字的问题,但也许最好使用正则表达式“^[\\w\\s]+$”Swift 3,let str=“Hello,playground1”检查字符串中的所有字符是否有效(即单词字符或空格)如果decimalRange!=则让decimalCharacters=NSCharacterSet.decimalDigits让decimalRange=str.rangeOfCharacter(from:decimalCharacters,options:String.CompareOptions.literal,range:nil)nil{print(“找到的数字”)}虽然此链接可以回答问题,但最好在此处包含答案的解释/详细信息并提供理由。
//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")
    let numbersRange = stringValue.rangeOfCharacter(from: .decimalDigits)
    let hasNumbers = (numbersRange != nil)
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")
}
//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")