从字符串中删除特殊字符,数字和双空格

时间:2013-05-24 17:12:28

标签: objective-c

我想从字符串中删除Special CharactersNumbersDouble 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*

3 个答案:

答案 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]相反地编写正则表达式。只需为您的案例使用所需的元字符。

相关问题