从NSString中删除非英文字符(Obj-C)

时间:2011-09-23 08:01:21

标签: iphone objective-c nsstring

我有像

这样的NSString
  

Amedkar Complex,位于艾哈迈达巴德的Drive-in Road,Gurukul对面,       àªà«àªàª°àª¾àª¤,印度

所以我想只考虑英文字符而不考虑     英文字符来自上面的字符串所以请给我任何想法。

提前致谢。

3 个答案:

答案 0 :(得分:4)

这是一个有点脏的例子:

NSString *test = @"Olé, señor!";

NSMutableString *asciiCharacters = [NSMutableString string];
for (NSInteger i = 32; i < 127; i++)  {
    [asciiCharacters appendFormat:@"%c", i];
}

NSCharacterSet *nonAsciiCharacterSet = [[NSCharacterSet characterSetWithCharactersInString:asciiCharacters] invertedSet];

test = [[test componentsSeparatedByCharactersInSet:nonAsciiCharacterSet] componentsJoinedByString:@""];

NSLog(@"%@", test); // Prints @"Ol, seor!"

答案 1 :(得分:1)

试试这个: -

NSString *emailRegEx = @"[A-Za-z]";
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegEx];
    //Valid email address
    NSString *textString=@"gagdaksdhaksdhaskdhasldhasldalasàªà«àªàª°àª¾àª¤dhwheqweuqweuqwe";
    NSString *textFinalString=@"";
    for (int i=0; i<[textString length]; i++) {
        NSString *text2string=[textString substringWithRange:NSMakeRange(i,1)];
        NSLog(@"%@",text2string);
        if ([emailTest evaluateWithObject:text2string] == YES) 
        {
            NSLog(@"yesenglishCharacter");
            textFinalString=[textFinalString stringByAppendingString:text2string];

        }
        else {
            NSLog(@"noenglishCharacter");
        }


    }
    NSLog(@"textFinalString%@",textFinalString);

答案 2 :(得分:0)

Here是使用NSRange为文本字段执行此操作的示例代码,尽管代码应该很容易适用于NSString的数组。希望有帮助!