+ (NSString *)lj_filterSpecialString:(NSString *)string { // 这个语句对显示为 +86 138************* 格式的不起作用的 // 因为 +86 后面跟的空白根本不是空格 string = [string stringByReplacingOccurrencesOfString:@" " withString:@""]; ........................... return string; } 改进建议,使用数字搜索: + (NSString *)lj_filterSpecialString:(NSString *)string { NSString *cnPhoneOrig = [string copy]; if (0 == cnPhoneOrig.length) { return @""; } NSScanner *aScaner = [NSScanner scannerWithString:cnPhoneOrig]; NSCharacterSet *aSetNumbers = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"]; NSString *cnPhone = @""; NSString *aNumber = nil; NSString *aOther = nil; while (![aScaner isAtEnd]) { [aScaner scanUpToCharactersFromSet:aSetNumbers intoString:&aOther]; [aScaner scanCharactersFromSet:aSetNumbers intoString:&aNumber]; cnPhone = [cnPhone stringByAppendingString:aNumber]; } if ([cnPhone hasPrefix:@"86"]) { cnPhone = [cnPhone substringFromIndex:2]; } if ([cnPhone hasPrefix:@"086"]) { cnPhone = [cnPhone substringFromIndex:3]; } return cnPhone; }
{
// 这个语句对显示为 +86 138*********** 格式的不起作用的
// 因为 +86 后面跟的空白根本不是空格
string = [string stringByReplacingOccurrencesOfString:@" " withString:@""];
...........................
return string;
}
改进建议,使用数字搜索:
(NSString *)lj_filterSpecialString:(NSString *)string
{
NSString *cnPhoneOrig = [string copy];
if (0 == cnPhoneOrig.length)
{
return @"";
}
NSScanner *aScaner = [NSScanner scannerWithString:cnPhoneOrig];
NSCharacterSet *aSetNumbers = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
NSString *cnPhone = @"";
NSString *aNumber = nil;
NSString *aOther = nil;
while (![aScaner isAtEnd])
{
[aScaner scanUpToCharactersFromSet:aSetNumbers intoString:&aOther];
}
if ([cnPhone hasPrefix:@"86"])
{
cnPhone = [cnPhone substringFromIndex:2];
}
if ([cnPhone hasPrefix:@"086"])
{
cnPhone = [cnPhone substringFromIndex:3];
}
return cnPhone;
}