QT string 提取x/y中的数字x和y
时间: 2024-09-30 14:15:23 浏览: 31
在Qt中,如果你想从一个包含坐标信息的字符串(例如 "x:10 y:20")中提取数字x和y,你可以使用正则表达式(QRegularExpression)配合QString的部分提取功能。这里是一个简单的示例:
```cpp
#include <QRegularExpression>
#include <QString>
QString str = "x:10 y:20";
// 创建正则表达式匹配模式,寻找"(\d+):(\d+)"
QRegularExpression regex("x:(\\d+) y:(\\d+)");
// 找到所有匹配项
QRegEx::MatchIterator it(str.begin(), str.end(), regex);
while (it.hasNext()) {
QRegEx::Match match = it.next();
int x = match.captured(1).toInt(); // 第一个括号内的数字是x
int y = match.captured(2).toInt(); // 第二个括号内的数字是y
// 现在x和y已经分别存储在变量中了
qDebug() << "x: " << x << ", y: " << y;
}
```
在这个例子中,`match.captured(n)`用于获取第n个括号里的内容,并转换成整数。如果你的字符串格式有所不同,你可能需要调整正则表达式的模式以适应实际情况。
相关问题
QT 从string类的“x/y”提取数字x和y
在Qt中,如果你有一个字符串"x/y"并且需要从中提取数字"x"和"y",你可以使用正则表达式和`QRegularExpression`类来完成这个任务。首先,你需要包含所需的头文件:
```cpp
#include <QRegularExpression>
#include <QString>
```
然后,可以编写一个函数来解析字符串:
```cpp
QString extractNumbers(const QString& inputString) {
QRegularExpression regex("\\d+/(\\d+)");
QRegularExpressionMatch match = regex.match(inputString);
if (match.hasMatch()) {
QString x = match.captured(1); // 提取第一个括号内的数字,即"x"
QString y = match.captured(2); // 提取第二个括号内的数字,即"y"
return "x: " + x + ", y: " + y;
} else {
return "无法提取数字,字符串格式错误";
}
}
```
在这个例子中,`regex("\\d+/(\\d+)")`定义了一个正则表达式,它匹配任何形如"任意数字/任意数字"的模式。`match.captured(n)`返回第n个括号中的捕获组内容。
如果你想在实际应用中使用这些值,你可以直接从`extractNumbers`返回的结果中获取`x`和`y`,或者根据需要进一步处理它们。
阅读全文