从NSString中删除所有非英文字符

时间:2015-06-03 18:57:16

标签: ios objective-c nsstring

我正在使用Foursquare的API来检索一些景点名称。问题是,对于某些城市(如开罗,莫斯科,北京),景点的英文名称会附加到该国语言的名称中,因此例如开罗的景点将如下所示:

  

Wekalet Al-Ghouri艺术中心| وكالةالسلطانالغوري

对于每个景点,我使用Flickr的API查找在查询中使用名称的照片。然而,上面的字符串几乎没有结果,只是查询'Wekalet Al-Ghouri艺术中心'给出了很多结果。所以我的问题是,有没有办法从字符串中识别和删除非英文字符?感谢您提前提供任何帮助:)

2 个答案:

答案 0 :(得分:2)

我的hacky解决方案:

NSString *stringWithForeignCharacters = @"Wekalet Al-Ghouri Arts Center | وكالة السلطان الغوري";
NSMutableCharacterSet *englishCharacterSet = [NSMutableCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-+ "];
// Add other such character sets as needed
[englishCharacterSet formUnionWithCharacterSet:[NSCharacterSet symbolCharacterSet]];
NSCharacterSet *foreignCharacters= [englishCharacterSet invertedSet];
NSString *filteredString= [[stringWithForeignCharacters componentsSeparatedByCharactersInSet:foreignCharacters] componentsJoinedByString:@""];

警告:对于复杂的字符串,这可能会很慢。

答案 1 :(得分:0)

假设您只想拥有ASCII字符集(在下面的代码中更改这很容易),您可以这样做

case

键入n Safari。     }