![](/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.