我正在和一个现有项目的Qt合作.我正在尝试通过串行电缆将字符串发送到恒温器以向其发送命令.我需要确保字符串只包含0-9,af,并且长度不超过或少于6个字符.我试图使用QString.contains,但我现在卡住了.任何帮助,将不胜感激.
RA.*_*RA. 12
您有两种选择:
使用QRegExp该类创建一个正则表达式,找到您要查找的内容.在你的情况下,像下面这样的东西可能会做到这一点:
QRegExp hexMatcher("^[0-9A-F]{6}$", Qt::CaseInsensitive);
if (hexMatcher.exactMatch(someString))
{
// Found hex string of length 6.
}
Run Code Online (Sandbox Code Playgroud)
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.
}
Run Code Online (Sandbox Code Playgroud)
检查字符串的长度,然后检查是否可以成功将其转换为整数(使用base 16转换):
bool conversionOk = false;
int value = myString.toInt(&conversionOk, 16);
if (conversionOk && myString.length() == 6)
{
// Found hex string of length 6.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4841 次 |
| 最近记录: |