【发布时间】:2013-03-25 20:09:09
【问题描述】:
问题是我找不到一种简单的方法来检测和替换 Qt 中的ąčęęėįšž 等非 ascii 字符。我从kažkodėl 之类的文件中读取了一行,并想将字符ž、ė 替换为z 和e。如有任何帮助,我将不胜感激。
【问题讨论】:
问题是我找不到一种简单的方法来检测和替换 Qt 中的ąčęęėįšž 等非 ascii 字符。我从kažkodėl 之类的文件中读取了一行,并想将字符ž、ė 替换为z 和e。如有任何帮助,我将不胜感激。
【问题讨论】:
对于检测,你大概可以使用QChar::toAscii() 并检查结果是否为0。
查看QString::toAscii() 的详细信息,您可能实际上正在寻找 toLatin1() 。请注意,QString 的 toLatin1() 似乎使用了“?”对于替换字符,而不是 QChar 的 toAscii() 的“0”。 (我不确定 Qt 是否在这里错误地将 latin1 和 ascii 等同起来......但它似乎声称它在文档中)
【讨论】:
由于没有真正的全面解决方案,并且您想用其他某些字符替换某些字符,在我看来,您想设置一个 QRegExp 搜索某些字符集,这些字符集使用单个字符获得 replaced .
另外,请参阅此链接:http://www.qtcentre.org/threads/38898-Accented-Character
编辑: QString::normalize() 是否符合您的要求? 见此链接:Removing accents from a QString
【讨论】: