作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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/
我是一名优秀的程序员,十分优秀!