gpt4 book ai didi

objective-c - 在 NSString 实例中替换给定 unicode char 的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-29 13:28:25 28 4
gpt4 key购买 nike

我有一个 NSString 实例(我们称它为 myString),其中包含以下 UTF-8 unicode 字符:\xc2\x96(这是在中看到的长破折号,例如,MS Word)。

当使用 NSLog%@ 格式说明符将 NSString 打印到控制台时,该字符被一个倒置的问号替换,表明出现了错误 -当将它用作表格单元格中的文本时,unicode 字符仅显示为空格(不是空字符串 - 空格)。

为了解决这个问题,我想用“正常”破折号替换 \xc2\x96 unicode 字符 - 起初我认为这应该是 10 秒。任务,但经过一些研究后,我还没有找到执行此操作的“正确方法”,这就是我需要你帮助的地方。

我尝试过的:

当我像这样 NSLog(@"%x", myString) 以十六进制打印 myString 时,我得到十六进制值:96表示 unicode 字符 \xc2\x96 的 unicode 字符。

使用这些信息,我做了以下实现,用它的“正常”破折号等效替换它:

for(int index = 0; index < [myString length]; index++)
{
NSLog(@"Hex:'%x' Char:'%c'", [myString characterAtIndex:index],[myString characterAtIndex:index]);

if([[NSString stringWithFormat:@"%x", [myString characterAtIndex:index]] isEqualToString:@"96"])
myString = [myString stringByReplacingCharactersInRange:NSMakeRange(index, 1) withString:@"-"];
}

...它有效,但我的眼睛不喜欢它,我想知道这是否可以以更清洁和“正确”的方式完成?例如。像 C# 的 String.Replace(char,char) which supports unicode characters .

总结一下:

我正在寻找替换字符串中 unicode 字符的“正确方法”——我做了一些研究,但显然,只有可用的方法可以将给定 NSString 的出现替换为另一个 NSString

我已阅读以下内容:

...但是所有这些都解释了如何用另一个 NSString 替换给定的 NSString 并且没有涵盖特定的 unicode 字符(特别是双字节)如何替换。

最佳答案

你可以让你的字符串可变(即使用 NSMutableString 而不是 NSString)。此外,对 [[NSString stringWithFormat:@"%x", character] isEqualToString:@"96"] 的调用尽可能低效 - 为什么不简单地 if (character == 0x96 )?总而言之,试试

NSString *longDash = @"\xc2\x96";
[string replaceOccurrencesOfString:longDash withString:@"-"];

关于objective-c - 在 NSString 实例中替换给定 unicode char 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12482674/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com