如何确保qstring每一行前面是汉字数字或英语
时间: 2024-02-24 17:56:09 浏览: 48
QString含汉字时,完美转char*和unsigned char*
您可以使用正则表达式来检查字符串中的每一行是否以汉字数字或英语开头。以下是一个示例:
```cpp
QString str = "你好\n123 test\nabc def\n测试 123";
QStringList lines = str.split("\n");
QRegularExpression re("^[\\p{Han}\\d\\p{L}].*");
// 匹配以汉字数字或英语开头的行
foreach (QString line, lines) {
QRegularExpressionMatch match = re.match(line);
if (match.hasMatch()) {
// 匹配成功
qDebug() << "Matched: " << line;
} else {
// 匹配失败
qDebug() << "Not matched: " << line;
}
}
```
在上面的例子中,我们首先将字符串 `str` 按行拆分成一个字符串列表。然后,我们使用 `QRegularExpression` 类创建一个正则表达式对象 `re`,该表达式可以匹配以汉字数字或英语开头的字符串。最后,我们遍历每一行,并使用 `re` 对象进行匹配,如果匹配成功,则输出匹配的行。
这里的正则表达式 `^[\\p{Han}\\d\\p{L}].*` 中的 `^` 表示匹配字符串的开头,`[\\p{Han}\\d\\p{L}]` 表示匹配汉字数字或英语字符,`.*` 表示匹配任意数量的任意字符。
阅读全文