簡體   English   中英

從NSString中刪除不允許的字符

[英]Remove unallowed characters from NSString

我想只允許字符串使用特定字符。

這是我嘗試過的。

NSString *mdn = @"010-222-1111";

NSCharacterSet *allowedCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@"+0123456789"];
NSString *trimmed = [mdn stringByTrimmingCharactersInSet:[allowedCharacterSet invertedSet]];
NSString *replaced = [mdn stringByReplacingOccurrencesOfString:@"-" withString:@""];

以上代碼的結果如下。 替換的結果就是我想要的。

trimmed : 010-222-1111
replaced : 0102221111

我在這里想念什么? 為什么invertedSet不起作用?

這里還有一件奇怪的事情。 如果我刪除invertedSet部分

NSString *trimmed = [mdn stringByTrimmingCharactersInSet:allowedCharacterSet];

結果是

trimmed : -222-

我不知道是什么導致了這個結果。

stringByTrimmingCharactersInSet:僅刪除字符串開頭和結尾的出現。 這就是為什么當您采用倒置集時,在字符串的開頭和結尾都找不到可行的字符,因此也不會刪除它們的原因。

一個解決方案是:

- (NSString *)stringByRemovingCharacters:(NSString*)str inSet:(NSCharacterSet *)characterSet {
    return [[str componentsSeparatedByCharactersInSet:characterSet] componentsJoinedByString:@""];
}

stringByTrimmingCharactersInSet僅刪除字符串末尾的字符,結果為-222-。 您必須做一些技巧來刪除集合中的所有字符

 NSString *newString = [[origString componentsSeparatedByCharactersInSet:
            [[NSCharacterSet decimalDigitCharacterSet] invertedSet]] 
            componentsJoinedByString:@""];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM