【问题标题】:Compare String against String Array比较字符串与字符串数组
【发布时间】:2015-01-30 16:50:14
【问题描述】:

我目前正在尝试确定将字符串值与字符串数组进行比较的最佳方法。问题来了……

我正在构建一个共享相同键盘的二进制、十进制和十六进制值之间的转换器。我想检查输入,并根据模式,让它通过或不通过(例如,二进制更多只允许 1 和 0,十进制 0-9 和十六进制 0-F)。

我可以这样说:

if (digit == binaryDigits[0]) || (digit == binaryDigits[1]) {
// do something
}

但这对于十进制和十六进制值来说不是很实用。

基本上,我想要一种方法来检查给定字符串与字符串数组中的所有值。

【问题讨论】:

标签: arrays swift string compare


【解决方案1】:

您可以使用contains() 方法:

var strings = ["Test", "hi"]
if contains(strings , "hi") {
    println("Array contains string")
}

【讨论】:

    【解决方案2】:

    使用stringArray.contains(string)

    例子:

    let cast = ["Vivien", "Marlon", "Kim", "Karl"]
    print(cast.contains("Marlon")) 
    // Prints "true"
    print(cast.contains("James"))  
    // Prints "false"
    

    访问https://developer.apple.com/documentation/swift/array/2945493-contains

    【讨论】:

    • 谢谢,和Christian建议的一样
    • 不完全... contains(array, string) 对我不起作用,因为它已更改为 array.contains(string)
    • 哦,是的,我很抱歉,没有注意到差异。我刚刚看到“包含”并认为它是相同的。道歉...标记你的答案,因为它是最新的
    【解决方案3】:

    这可能不是最优雅的解决方案,但它清晰简洁:-

    func isValidHex( input: String ) -> Bool {
        let hset:NSCharacterSet = NSCharacterSet(charactersInString:"0123456789ABCDEF")
        return (countElements(input.stringByTrimmingCharactersInSet(hset)) == 0)
    }
    
    func isValidDecimal( input: String ) -> Bool {
        let hset:NSCharacterSet = NSCharacterSet(charactersInString:"0123456789")
        return (countElements(input.stringByTrimmingCharactersInSet(hset)) == 0)
    }
    
    func isValidBinary( input: String ) -> Bool {
        let hset:NSCharacterSet = NSCharacterSet(charactersInString:"01")
        return (countElements(input.stringByTrimmingCharactersInSet(hset)) == 0)
    }
    

    【讨论】:

    • 感谢您的建议!我想我会使用其他人发布的 contains() 方法,但感谢您采用不同的方法
    • 认为我误解了你的问题。我以为你想验证字符串是二进制、十进制还是十六进制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2021-08-05
    相关资源
    最近更新 更多