【发布时间】:2015-06-09 14:19:29
【问题描述】:
我有自定义(动态 QString),例如 123+555 之类的东西,我需要在 + 之后得到它。此外,+(/、*、- 等)可能会有不同的东西。我的问题是如何在一些字符之后获取部分字符串。
【问题讨论】:
-
QString::split 在这种情况下可以正常工作。如果您需要更多控制,请查看 QRegularExpression。
我有自定义(动态 QString),例如 123+555 之类的东西,我需要在 + 之后得到它。此外,+(/、*、- 等)可能会有不同的东西。我的问题是如何在一些字符之后获取部分字符串。
【问题讨论】:
使用split 函数,它允许您指定分隔符并返回元素列表。
QString string("123+555");
QStringList listItems = string.split('+', QString::SkipEmptyParts);
QString finalString = listItems[1];
或者,您可以find by index 分隔字符位置并将其与right 的调用一起使用
【讨论】:
由于您使用的是 Qt,您可以尝试以下课程:QRegExp。
有了这样的类,你可以编写如下代码:
// This code was not tested.
QRegExp rx("(\\d+)(\\+|\\-|\\*|/)(\\d+)"); // Be aware, I recommend you to read the link above in order to see how construct the proper regular expression.
int pos = rx.indexIn("23+344");
if (pos > -1) {
QString number_1 = rx.cap(1); // "23"
QString op = rx.cap(2); // "+"
QString number_2 = rx.cap(3); // "344"
// ...
}
这样您就不必编写代码来检查存在哪些字符(运算符)“+、-、*、/”,然后根据找到的字符对字符串执行拆分。
【讨论】: