我有一堆 NSStrings,我想从中获取第一个字符并将它们匹配在 AZ 和 # 范围内,作为不适用的东西的全部捕获。
不同的字素(我相信在一些维基百科之后这是正确的词)一直给我带来麻烦。例如,我想从“Æ”中提取 A。
我查看了 CFStringTransform、规范化和折叠,但都没有达到预期的效果。
有没有可靠的方法来做到这一点?我正在使用的所有字符串都是 UTF8,如果这有所作为的话。
Æ 不能分解成组件。它不是 A+E 的复合字形,而是一个单独的字形。复合字形类似于 a+`
你想摆脱所有的æ?
如果你这样做,这应该有效。
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]];
关于“Æ”的事情是它本身就是一个ascii字符。不是两个不同字符的组合,因此您无法从中提取 A,因为它只有 1 个字符。
编辑:
尽管您可以执行检查以查看字符串是否等于“Æ”,并且如果它确实告诉它用“A”切换它或将其转换为它的 dec,形成并减去 81,这将给您一个“A”。