0

我有一堆 NSStrings,我想从中获取第一个字符并将它们匹配在 AZ 和 # 范围内,作为不适用的东西的全部捕获。

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

我查看了 CFStringTransform、规范化和折叠,但都没有达到预期的效果。

有没有可靠的方法来做到这一点?我正在使用的所有字符串都是 UTF8,如果这有所作为的话。

4

3 回答 3

3

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

于 2012-08-06T15:41:49.873 回答
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]];
于 2012-08-06T15:40:53.723 回答
1

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

编辑:

尽管您可以执行检查以查看字符串是否等于“Æ”,并且如果它确实告诉它用“A”切换它或将其转换为它的 dec,形成并减去 81,这将给您一个“A”。

于 2012-08-06T15:37:31.687 回答