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/

10-12 20:37