可可:从“Æ”中提取“A”

时间:2012-08-06 15:34:59

标签: cocoa nsstring

我有一堆NSStrings,我希望从中获取第一个字符并在A-Z和#中匹配它们作为一个捕获所有不适用的东西。

不同的字形(我相信在一些维基之后是正确的字)一直给我带来麻烦。例如,我想从“Æ”中提取A.

我看过CFStringTransform,规范化并弃牌,但没有一个能达到预期的效果。

有可靠的方法吗?我正在使用的所有字符串都是UTF8,如果这有所不同的话。

3 个答案:

答案 0 :(得分:3)

Æ不能分解成组件。它不是A + E的复合字形,而是一个单独的字形。复合字形就像是一个+`

答案 1 :(得分:1)

关于“Æ”的事情是它本身就是一个ascii角色。不是两个不同字符的组合,因此您无法从中提取A,因为它只有1个字符。

编辑:

虽然您可以执行检查以查看字符串是否等于“Æ”,并且如果它确实告诉它将其切换为“A”或将其转换为其dec,则形成并减去81会给出“A”

答案 2 :(得分:1)

你想摆脱所有æ?

如果你这样做,这应该有用。

NSString *string = @"Æaæbcdef";
string = [string stringByReplacingOccurrencesOfString:@"æ" withString:@"a"];
string = [string stringByReplacingOccurrencesOfString:@"Æ" withString:@"A"];

修改

重读,你似乎只想要第一个角色:

NSString *string = @"Æaæbcdef";
NSString *firstChar = [string substringToIndex:1];
firstChar = [firstChar stringByReplacingOccurrencesOfString:@"æ" withString:@"a"];
firstChar = [firstChar stringByReplacingOccurrencesOfString:@"Æ" withString:@"A"];

NSString *finalString = [NSString stringWithFormat:@"%@%@", firstChar, [string substringFromIndex:1]];