簡體   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