与字符串数组比较字符串

3

我目前正试图确定将字符串值与字符串数组进行比较的最佳方法。以下是问题...

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

我可以通过以下方式来实现:

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

但是当涉及到十进制和十六进制的值时,这并不是很实用。

基本上我想要一种方法来将给定的字符串与字符串数组中的所有值进行比较。


这是你需要的吗:如何检查一个元素是否在数组中 - Martin R
没错,就是这样,谢谢! - SimonTheEngineer
3个回答

5
您可以使用 contains() 方法:
var strings = ["Test", "hi"]
if contains(strings , "hi") {
    println("Array contains string")
}

4

谢谢,这与Christian建议的相同。 - SimonTheEngineer
不完全是这样... contains(array, string) 对我来说不起作用,因为它已经被更改为array.contains(string)。 - AW5
哦,对不起,我没有注意到那个区别。我只看到了“包含”并认为它是一样的。抱歉...我将您的回答标记为正确答案,因为它是最新的。 - SimonTheEngineer

0

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

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()方法,但还是感谢你提供了另一种方法。 - SimonTheEngineer
我可能误解了你的问题。我以为你想验证字符串是二进制、十进制还是十六进制。 - Echelon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接