gpt4 book ai didi

ios - 如何使用 NSCharacterSet 使用 AND 或 OR 逻辑检查字符串

转载 作者:行者123 更新时间:2023-11-29 02:38:38 26 4
gpt4 key购买 nike

我正在使用 Zxing 库来扫描条形码。结果存储在 NSString 中。这里我研究两种情况:

Case:'semicolon' :如果结果字符串包含分号字符...则将其存储在分号数组中

myWords_semicolon = [_myString componentsSeparatedByCharactersInSet:
[NSCharacterSet characterSetWithCharactersInString:@";,;;"]
];
//here myWords_semicolon is a NSArray

Case: 'pipe' :如果结果字符串包含管道字符...则将其存储在管道数组中。

myWords_pipe = [_myString componentsSeparatedByCharactersInSet:
[NSCharacterSet characterSetWithCharactersInString:@"|,||"]
];

我试图做的是,如果结果字符串包含分号......转到case :'分号'......如果结果包含管道转到case:'pipe'。我用这个来做到这一点,但无法得到正确的解决方案。

if ([_myString rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@";,;;"]].location != NSNotFound) {
NSLog(@"This string doesnt contain semicolon characters");
myWords=myWords_pipe;

}

if ([_myString rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"|,||"]].location != NSNotFound) {
NSLog(@"This string doesnt contain pipe characters");


myWords=myWords_semicolon;
}

在这种情况下....只有分号才起作用,即使我扫描管道案例,扫描仪也无法识别管道案例..还有其他方法可以使用 && 或 ||这里有逻辑吗?

最佳答案

您的代码的问题是两个集合都包含逗号,同时带有竖线的字符串和带有分号的字符串都包含逗号。因此,只有两个 if 中最后一个的赋值才会起作用,因为两个 if 都会“触发”。

您应该能够通过从集合中删除逗号和重复的竖线来解决此问题。此外,您应该能够通过使用 rangeOfString: 方法而不是 rangeOfCharacterFromSet:

来进一步简化它
if ([_myString rangeOfString:@";"].location != NSNotFound) {
NSLog(@"This string contains a semicolon");
myWords=myWords_semicolon;
}
if ([_myString rangeOfString:@"|"].location != NSNotFound) {
NSLog(@"This string contains a pipe");
myWords=myWords_pipe;
}

关于ios - 如何使用 NSCharacterSet 使用 AND 或 OR 逻辑检查字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26051123/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com