【问题标题】:How to detect and replace non-ascii characters in Qt?如何检测和替换 Qt 中的非 ascii 字符?
【发布时间】:2013-03-25 20:09:09
【问题描述】:

问题是我找不到一种简单的方法来检测和替换 Qt 中的ąčęęėįšž 等非 ascii 字符。我从kažkodėl 之类的文件中读取了一行,并想将字符žė 替换为ze。如有任何帮助,我将不胜感激。

【问题讨论】:

    标签: c++ qt replace character


    【解决方案1】:

    对于检测,你大概可以使用QChar::toAscii() 并检查结果是否为0。

    查看QString::toAscii() 的详细信息,您可能实际上正在寻找 toLatin1() 。请注意,QString 的 toLatin1() 似乎使用了“?”对于替换字符,而不是 QChar 的 toAscii() 的“0”。 (我不确定 Qt 是否在这里错误地将 latin1 和 ascii 等同起来......但它似乎声称它在文档中)

    【讨论】:

    • 在 Qt5 中,QString::toAscii() 已被弃用,文档告诉您改用 QString::toLatin1()。
    【解决方案2】:

    由于没有真正的全面解决方案,并且您想用其他某些字符替换某些字符,在我看来,您想设置一个 QRegExp 搜索某些字符集,这些字符集使用单个字符获得 replaced .

    另外,请参阅此链接:http://www.qtcentre.org/threads/38898-Accented-Character


    编辑: QString::normalize() 是否符合您的要求? 见此链接:Removing accents from a QString

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-10
      • 1970-01-01
      • 2015-08-14
      • 1970-01-01
      • 1970-01-01
      • 2016-04-09
      相关资源
      最近更新 更多