![](/img/trans.png)
[英]How come I didn't have to instantiate the NSCharacterSet object first before using it?
[英]How to check a string using AND or OR logic with NSCharacterSet
我正在使用Zxing库扫描条形码。 结果存储在NSString中。 在这里,我研究两种情况:
案例:'semicolon' :如果结果字符串包含分号字符...。然后将其存储在分号数组中
myWords_semicolon = [_myString componentsSeparatedByCharactersInSet:
[NSCharacterSet characterSetWithCharactersInString:@";,;;"]
];
//here myWords_semicolon is a NSArray
案例:'pipe' :如果结果字符串包含管道字符...则将其存储在管道数组中。
myWords_pipe = [_myString componentsSeparatedByCharactersInSet:
[NSCharacterSet characterSetWithCharactersInString:@"|,||"]
];
我想做的是,如果结果字符串包含分号……转到case:'semicolon'......如果结果包含pipe,则转到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
s中的最后一个赋值才会起作用,因为两个if
s都将“触发”。
您应该能够通过删除集中的逗号和重复的管道来解决此问题。 而且,您应该能够通过使用rangeOfString:
方法而不是rangeOfCharacterFromSet:
来进一步简化它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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.