【发布时间】:2021-04-24 15:33:25
【问题描述】:
所以我在 C 中有这个示例字符串,其中包含以下内容:
char text_string[100] = "A panqueca americana é provavelmente o caféç da manhã mais famoso dos Estados Unidos.";
我需要查找和替换特殊字符,例如“ç”,并将它们转换为非重音字符(例如,“ç”会变成“c”)。
我真的为此苦苦挣扎,四处搜索,但找不到任何可以帮助解决这个问题的东西。我尝试使用 usint strchr 将文本的各个字符与特殊字符进行比较,如下所示,但它不起作用。
char transform_text(char *text_string){
for(int i=0; i<100; i++){
if(strchr("ç", text_string[i]) != NULL )
text_string[i]='c';
}
有什么建议吗?提前谢谢你。
【问题讨论】:
-
取决于编码。
printf("%d\n", (int) sizeof("ç"));是什么? -
text_string未在函数中使用,list_string未定义。发布可编译的代码。 -
刚刚编辑了答案,在将我的内容复制到我的帖子中时出现了一点错字,它是 text_string 而不是 list_string 但在我的函数中已得到纠正。您要求的 printf 打印数字 3。
-
您将需要使用名为 ICU 或 libICU 的库。见site.icu-project.org
-
这里有一个小东西可以在 Python 中做你想做的事情。应该让您了解如何在 C 中执行此操作。基本上标准化为 NKFD 并重新编码为 ASCII。 gist.github.com/tantale/a824fa0948d986d824e6a9965b488d5f
标签: c