从 NSString 中删除所有非英文字符
Remove all non-english characters from NSString
我正在使用 Foursquare 的 API 检索一些景点名称。问题是,对于某些城市(如开罗、莫斯科、北京),景点的英文名称会附加到该国家/地区的语言名称中,因此例如开罗的景点将如下所示:
Wekalet Al-Ghouri Arts Center | وكالة السلطان الغوري
对于每个景点,我都使用 Flickr 的 API 查找在查询中使用名称的照片。但是,上面的字符串几乎没有结果,而仅查询 'Wekalet Al-Ghouri Arts Centre' 就给出了很多结果。所以我的问题是,有没有办法从字符串中识别和删除非英语字符?提前感谢您的帮助:)
我的 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:@""];
警告:对于复杂的字符串,这可能会很慢。
假设你只想拥有 ASCII 字符集(在下面的代码中改变它很容易)你可以这样做
NSString *source = …;
NSMutableString *dest = [source mutableCopy];
NSCharacterSet *validCharacters = [NSCharacterSet characterSetWithCharactersInString:@" -+abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"];
NSCharacterSet *invalidCharacters = [validCharacters invertedSet];
NSRange invalidRange;
while ( (invalidRange = [dest rangeOfCharactersFromSet:invalidCharacters]).length != 0)
{
[dest replaceCharactersInRange:invalidRange withString:@""];
}
在 Safari 中输入。
}
我正在使用 Foursquare 的 API 检索一些景点名称。问题是,对于某些城市(如开罗、莫斯科、北京),景点的英文名称会附加到该国家/地区的语言名称中,因此例如开罗的景点将如下所示:
Wekalet Al-Ghouri Arts Center | وكالة السلطان الغوري
对于每个景点,我都使用 Flickr 的 API 查找在查询中使用名称的照片。但是,上面的字符串几乎没有结果,而仅查询 'Wekalet Al-Ghouri Arts Centre' 就给出了很多结果。所以我的问题是,有没有办法从字符串中识别和删除非英语字符?提前感谢您的帮助:)
我的 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:@""];
警告:对于复杂的字符串,这可能会很慢。
假设你只想拥有 ASCII 字符集(在下面的代码中改变它很容易)你可以这样做
NSString *source = …;
NSMutableString *dest = [source mutableCopy];
NSCharacterSet *validCharacters = [NSCharacterSet characterSetWithCharactersInString:@" -+abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"];
NSCharacterSet *invalidCharacters = [validCharacters invertedSet];
NSRange invalidRange;
while ( (invalidRange = [dest rangeOfCharactersFromSet:invalidCharacters]).length != 0)
{
[dest replaceCharactersInRange:invalidRange withString:@""];
}
在 Safari 中输入。 }