由于某些奇怪的原因,我的stringByTrimmingCharacterInSet:允许'%'通过。
为什么?
演示此问题的简单代码(意味着从文本中添加电话#):
NSString * allowedSet = @"01234567890+-#";
NSCharacterSet * disallowedSet =[[NSCharacterSet characterSetWithCharactersInString:allowedSet] invertedSet];
in = @"+31%121212abc";
out = [in stringByTrimmingCharactersInSet:disallowedSet];
我原本期望输出
... In : +31%121212abc
... Out : +31121212
但我得到了:
... In : +31%121212abc
... Out : +31%121212
为什么?它似乎适用于所有其他字符。 '%'是特殊的 - 或者这是一个奇怪的URL相关问题吗?
答案 0 :(得分:0)
我修剪字符串;而不是替换字符。所以它忽略了那些不在开始或结束的人;即字符串中间的字符。使用stringByReplacingCharactersInSet:很好地解决了这个问题。
@interface NSString (inefficientStringByRemovingCharactersInSet)
- (NSString *)stringByRemovingCharactersInSet:(NSCharacterSet *)characterSet;
@end
@implementation NSString (inefficientStringByRemovingCharactersInSet)
- (NSString *)stringByRemovingCharactersInSet:(NSCharacterSet *)characterSet {
return [[self componentsSeparatedByCharactersInSet:characterSet]
componentsJoinedByString:@""];
}
@end