Frage

message.Text () ist ein QString.

Ich möchte einen Text entfernen.

Der Text kann sein:

  1. Normal: "This is a text"
  2. Mit einem Etikett: "<label1>something</label1>This is a text"

Zuerst finde ich, wenn der Text das Etikett hat:

!message.Text().contains("<label1>", Qt::CaseInsensitive))

Also, wenn es hat, mag ich den ersten Teil zu entfernen, einen normalen Text zu haben, „Dies ist ein Text“.

Ich habe versucht, diese:

first=message.Text().indexOf("<label1>");
last=message.Text().lastIndexOf("</label1>");
message.Text().remove(first,last);

Aber ich habe Compilerfehler C2663.

Ich weiß auch, dass die message.Text().remove(QChar('<label1'), Qt::CaseInsensitive); eine andere Art und Weise, es zu tun ist. Aber in meinem Fall, der Teil zwischen dem Etikett unkwnow.

Es kann <label1>something</label1> oder <label1>oisdioadj</label> oder <label1>7</label1> sein ....

Jede Idee?

Viele Grüße.

War es hilfreich?

Lösung

Versuchen Sie Folgendes:

#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;
}

Andere Tipps

Mein Rat hier:. Halten Sie die Dinge einfach in Ihrem Code, wird es helfen, die Dinge einfach in den Kopf zu machen

Es scheint, was Sie erreichen wollen mehr auf Saiten bezogen, als zu beschriften.

Ich schlage vor, Sie den Text aus dem Etikett zu bekommen, dann Arbeit auf sie unabhängig, es dann zu Ihrem Etikett assoziieren zurück:

QString text = message.text();

/* Do whatever you need to do here with text */

message.setText(text);

Auch der Fehler Sie ist, wahrscheinlich aufgrund der Tatsache, dass Sie versuchen, direkt zu modifizieren message.text (), die ein ist const Hinweis: Natürlich kann man nicht etwas ändern, das ist const.

Ich glaube, was Sie versuchen können, zu erreichen getan werden unter Verwendung von QString: : () ersetzen. Sie werden reguläre Ausdrücke dafür verwenden müssen, also, wenn Sie nicht mit ihm vertraut sind, könnte es schwierig sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top