11
4

4 回答 4

9

在我的理解中没有这样的内置功能。

大约 1-2 年前,我提出了一个用于 QString/QChar 的 isAscii() 方法来包装低级 Unix isacii() 和相应的 Windows 函数,但被拒绝了。你可以这样写:

bool isUnicode = !myString.at(3).isAcii();

如果你能说服维护者,我仍然认为这将是一个方便的功能。:-)

除此之外,恐怕您需要自己检查 ascii 边界。您可以自己执行以下操作:

bool isUnicode = myChar.unicode() > 127; 

有关详细信息,请参阅文档:

ushort QChar::unicode () 常量

这是一个过载功能。

于 2014-01-07T20:38:43.010 回答
9

如果您需要纯 7 位ASCII,最简单的方法是检查每个字符的代码 ( QChar::unicode() ) 是否低于 128 。

于 2014-01-07T20:38:22.533 回答
3

要在没有循环的情况下以紧凑的方式编写它,您可以使用正则表达式:

bool containsNonASCII = myString.contains(QRegularExpression(QStringLiteral("[^\\x{0000}-\\x{007F}]")));
于 2017-09-03T20:44:59.407 回答
0

这对我有用:isLetterOrNumber()

ot_id += QChar((short) b.to_ulong()).isLetterOrNumber() ? QChar((short) b.to_ulong()) : QString("");
于 2021-09-24T02:56:30.087 回答