使用 Qt/C++,我需要生成一个仅包含 ASCII 字符子集的字符串:字母、数字、连字符、下划线、句点或冒号。
\n\n作为输入,我可以有任何东西。
\n\n所以我尝试应用一些规则:
\n\nQt/C++ 有没有简单的方法来应用第二条和第三条规则?
\n\n谢谢
\n是的,有一种方法。 \n首先你应该使用 \n 对字符串进行 unicode 标准化QString::normalized。需要标准化来将变音符号与字母分开,并用 ASCII 等效符号替换一些奇特的符号。在这里您可以阅读有关规范化表格的信息。
然后你可以获取可以用 Latin-1 编码的字符。可以使用 QChar 的toLatin1方法进行测试。
\n\n\nchar QChar::toLatin1() const
\n返回与 QChar 等效的 Latin-1 字符或 0。这主要对非国际化软件有用。
\n...
\n
QString testString = QString::fromUtf8("Ce\xc3\xb1\xc3\xada-\xc3\xbc\xc3\x8f\xc3\x96\xe9\xa9\xac\xe5\x85\x8b\xc3\xb1");\nQString normalized = testString.normalized(QString::NormalizationForm_KD);\nQString result;\n\ncopy_if(normalized.begin(), normalized.end(), back_inserter(result), [](QChar& c) {\n return c.toLatin1() != 0;\n});\n\nqDebug() << result; // Cenia-uIOn\nRun Code Online (Sandbox Code Playgroud)\n