我想从字符串中删除Special Characters
,Numbers
和Double Spaces
,但它会删除所有空格。我该如何解决?
代码:
_tfName.text = [[_tfName.text componentsSeparatedByCharactersInSet:[[NSCharacterSet letterCharacterSet] invertedSet]] componentsJoinedByString:@""];
的字符串:
Real String Formated What I want
___________ ________ ___________
Lincon Man LiconMan Licon Man
Name Surname NameSurname Name Surname
09123721*)(%!@ˆ*# *blank* *blank*
答案 0 :(得分:1)
您有很多选择。一个好的方法是使用NSRegularExpression来满足这两个需求。一个用于查找不需要的字符并将其删除,另一个用于查找双重空格并将其删除。
我建议使用此选项,因为您可以重复使用大多数逻辑来执行这两个操作。
您也可以使用NSScanner。
您可以使用NSCharacterSet创建一组您不想要的字符并使用NSString方法删除它们来完成不需要的字符部分 - stringByTrimmingCharactersInSet: 采用NSCharacterSet参数。
NSString有 - stringByReplacingOccurrencesOfString:withString: 你可以传递一个双空格字符串。
存在其他选项,但NSRegularExpression是双倍空格的方法。 对于不需要的字符,NSCharacterSet方法非常容易。
答案 1 :(得分:0)
您是否考虑将空白作为参数传递给componentsJoinedByString:
string = [[string componentsSeparatedByCharactersInSet:[[NSCharacterSet letterCharacterSet] invertedSet]] componentsJoinedByString:@" "];
答案 2 :(得分:0)
这可能是您正在寻找的:
NSRegularExpression *re = [NSRegularExpression regularExpressionWithPattern:@"[@#$.,!\\d]" options:0 error:nil];
NSString *input = @"1234 Nöel* *Smith $!@";
NSString *output = [re stringByReplacingMatchesInString:input
options:0
range:NSMakeRange(0, [input length])
withTemplate:@""];
/* -> Nöel Smith */
根据您是否知道要删除哪些字符或要保留哪些字符,您可以像这样或与[^caracters-to-keep]
相反地编写正则表达式。只需为您的案例使用所需的元字符。