繁体   English   中英

如何使用带有NSCharacterSet的AND或OR逻辑检查字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM