如何检查字符串是不是包含int? -迅速

Posted

技术标签:

【中文标题】如何检查字符串是不是包含int? -迅速【英文标题】:How to check if a string contains an int? -Swift如何检查字符串是否包含int? -迅速 【发布时间】:2015-10-25 18:14:21 【问题描述】:

我需要知道字符串是否包含 Int 以确保用户输入的名称是有效的全名, 为此,我需要使用户仅键入字符,或者使用户输入的字符串中没有整数有效。 感谢所有的帮助。

【问题讨论】:

转换为NSString,你可以使用string.containsString(otherString)并检查它是否包含一个数字。 为什么只检查整数? ➽, ⨕, ????, 还是????是有效字符吗? ***.com/questions/25651612/… 可能重复。 【参考方案1】:

你需要通过包装 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
  

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

我从http://benscheirman.com/2014/06/regex-in-swift/得到这些

【讨论】:

问题是关于 Swift 编程语言,而不是 javascript。顺便说一句,字母比 a-z、A-Z 多。 Ä 或 é 呢? 虽然这回答了在字符串中定位数字的问题,但使用正则表达式 "^[\ \w\\s]+$"【参考方案2】:

您可以将 Foundation 方法与 Swift 字符串一起使用,这就是您应该在此处执行的操作。 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:) 以防止人们首先输入这些字符。

【讨论】:

Swift 3, let str = "Hello, playground1" let decimalCharacters = NSCharacterSet.decimalDigits let decimalRange = str.rangeOfCharacter(from: decimalCharacters, options: String.CompareOptions.literal, range: nil) if decimalRange != nil print("找到的数字") 【参考方案3】:

这个方法是我现在用来检查字符串是否包含数字的方法

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。希望对你有帮助

【讨论】:

【参考方案4】:
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)

【讨论】:

【参考方案5】:
        //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")

【讨论】:

【参考方案6】:

斯威夫特 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")

【讨论】:

【参考方案7】:

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

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

【讨论】:

【参考方案8】:
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")

【讨论】:

【参考方案9】:
//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")

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的解释/详细信息并提供理由。

以上是关于如何检查字符串是不是包含int? -迅速的主要内容,如果未能解决你的问题,请参考以下文章

Java,简化检查 int 数组是不是包含 int

Objective-C 检查带有 int 的数组是不是包含 int [关闭]

如何在 Pygame 中检查变量是不是包含矩形? [复制]

检查字典是不是包含 Swift 中的值

并发数组检查

如何检查整数是不是在范围内?