我正在使用 Qt 处理现有项目。我正在尝试通过串行电缆将字符串发送到恒温器以向其发送命令。我需要确保字符串仅包含 0-9、af,并且长度不超过或少于 6 个字符。我试图使用 QString.contains,但我目前被卡住了。任何帮助,将不胜感激。
问问题
6337 次
1 回答
12
你有两个选择:
使用 QRegExp
使用QRegExp
该类创建一个正则表达式来查找您要查找的内容。在您的情况下,类似以下内容可能会起到作用:
QRegExp hexMatcher("^[0-9A-F]{6}$", Qt::CaseInsensitive);
if (hexMatcher.exactMatch(someString))
{
// Found hex string of length 6.
}
更新
Qt 5 用户应该考虑使用QRegularExpression
而不是QRegExp
:
QRegularExpression hexMatcher("^[0-9A-F]{6}$",
QRegularExpression::CaseInsensitiveOption);
QRegularExpressionMatch match = hexMatcher.match(someString);
if (match.hasMatch())
{
// Found hex string of length 6.
}
仅使用 QString
检查字符串的长度,然后检查是否可以成功将其转换为整数(使用基数 16 转换):
bool conversionOk = false;
int value = myString.toInt(&conversionOk, 16);
if (conversionOk && myString.length() == 6)
{
// Found hex string of length 6.
}
于 2013-05-31T16:01:19.830 回答