0

我想从字符串中删除Special Characters, Numbersand 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*
4

3 回答 3

1

你有很多选择。一个好的方法是使用 NSRegularExpression 来满足这两个需求。一个查找不需要的字符并将其删除,另一个查找双空格并删除它们。

我推荐这个选项,因为你可以重用大部分逻辑来做这两个。

你也可以使用 NSScanner。

您可以通过使用 NSCharacterSet 创建一组您不想要的字符并使用 NSString 方法删除它们来完成不需要的字符部分 - stringByTrimmingCharactersInSet: 接受一个 NSCharacterSet 参数。

NSString 有 –stringByReplacingOccurrencesOfString:withString: 你可以给它传递一个双空格字符串。

存在其他选项,但 NSRegularExpression 是使用双空格的方法。NSCharacterSet 方法对于不需要的字符非常简单。

于 2013-05-25T00:23:48.663 回答
0

您是否想过将空格作为参数传递给componentsJoinedByString:

string = [[string componentsSeparatedByCharactersInSet:[[NSCharacterSet letterCharacterSet] invertedSet]] componentsJoinedByString:@" "];

于 2013-05-24T22:36:09.403 回答
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]. 只需为您的案例使用所需的元字符。

于 2013-05-25T01:15:39.317 回答