[英]Replace all non-ASCII characters in a string by their ASCII equivalent
使用Qt / C ++,我需要生成仅包含ASCII字符子集的字符串:字母,数字,连字符,下划线,句号或冒号。
作为输入,我可以有任何东西。
因此,我尝试应用一些规则:
Qt / C ++是否有任何简单的方法可以应用第二条规则和第三条规则?
谢谢
是的,有办法。 首先,您应该使用QString::normalized
对字符串进行unicode QString::normalized
。 需要规范化以将变音符号与字母分开,并用ascii等效项替换一些花哨的符号。 在这里您可以阅读有关标准化表格的信息。
然后,您可以获取可以用Latin-1编码的字符。 可以使用QChar的toLatin1方法进行测试。
char QChar :: toLatin1()常量
返回等效于QChar或0的Latin-1字符。这主要用于非国际化的软件。
...
QString testString = QString::fromUtf8("Ceñía-üÏÖ马克ñ");
QString normalized = testString.normalized(QString::NormalizationForm_KD);
QString result;
copy_if(normalized.begin(), normalized.end(), back_inserter(result), [](QChar& c) {
return c.toLatin1() != 0;
});
qDebug() << result; // Cenia-uIOn
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.