English 中文(简体)
在字符串中替换字母
原标题:Replace letters in a string

你好,我有一个问题 我不知道如何解决。问题是,我甚至不知道如何去寻找答案。我已经在互联网上花了几个小时来寻找解决办法,但是没有成功。情况是这样的:

我有弦乐,让我们说:

NSString *string = @"aąbcčdeęėfghiįjzž";

我的结果必须是这样的:

NSString *string = @"aabccdeeefghiujzz";

如果你明白我必须这么做:

以 a 取代

将č改为c

以e取代e

将 _____ 替换为 e

等... 等... 等... 等... 等... 等...

也许有人能帮我?我有一个答案,但它不是最优化的,我希望一些更方便的解决方案。

提前感谢!

最佳回答

让框架对您进行转换 :

NSString *blah = @"aąbcčdeęėfghiįjzž";
NSData *data = [blah dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *newblah = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
NSLog(@"new: %@", newblah);

本日志 :

new: aabccdeeefghiijzz
问题回答

这项工作将:

NSString *str = @"aąbcčdeęėfghiįjzž";
NSLog(@"%@", str);
NSMutableString *s = [[str decomposedStringWithCompatibilityMapping] mutableCopy];
NSUInteger pos = 0;
while(pos < s.length) {
    NSRange r = [s rangeOfComposedCharacterSequenceAtIndex:pos];
    if (r.location == NSNotFound) break;
    pos = ++r.location;
    if (r.length == 1) continue;
    r.length--;
    [s deleteCharactersInRange:r];
}
NSLog(@"%@", s);

其想法是首先将每个字符与截分标记分解成其基本字符序列和