message.Text()是QString。
我想删除一些文字。
文本可以是:
正常:“ This is a text
”
带有标签:“ <label1>something</label1>This is a text
”
首先,我查找文本是否带有标签:
!message.Text().contains("<label1>", Qt::CaseInsensitive))
因此,如果有的话,我想删除第一部分,以使用普通文本“ This is a text”。
我尝试了这个:
first=message.Text().indexOf("<label1>");
last=message.Text().lastIndexOf("</label1>");
message.Text().remove(first,last);
但是我得到了编译器错误C2663。
我也知道
message.Text().remove(QChar('<label1'), Qt::CaseInsensitive);
是另一种方法。但就我而言,标签之间的部分是未知的。它可以是
<label1>something</label1>
或<label1>oisdioadj</label>
或<label1>7</label1>
....任何想法?
问候。
最佳答案
请尝试以下操作:
#include <iostream>
using std::cout; using std::endl;
#include <QString>
int main()
{
QString message = "<label1>something</label1>This is a test";
const QString labelClose = "</label1>";
const int labelCloseSize = labelClose.size();
cout << "message: " << qPrintable(message) << endl;
const int closePosition = message.lastIndexOf(labelClose);
QString justText = message.remove(0, closePosition + labelCloseSize);
cout << "just text: " << qPrintable(justText) << endl;
}
关于c++ - QString,删除标签和内容?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3574972/