Domanda

Message.Text () è una QString.

Voglio rimuovere una parte di testo.

Il testo può essere:

  1. normale: "This is a text"
  2. Con un'etichetta: "<label1>something</label1>This is a text"

In primo luogo, trovare se il testo ha l'etichetta:

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

Quindi, se ne ha, voglio rimuovere la prima parte, di avere un testo normale "Questo è un testo".

Ho provato questo:

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

Ma ho avuto compilatore C2663 errore.

So anche che il message.Text().remove(QChar('<label1'), Qt::CaseInsensitive); è un altro modo per farlo. Ma nel mio caso, la parte tra l'etichetta è unkwnow.

Può essere <label1>something</label1> o <label1>oisdioadj</label> o <label1>7</label1> ....

Qualche idea?

Saluti.

È stato utile?

Soluzione

Prova il seguente:

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

Altri suggerimenti

Il mio consiglio qui:. Cose continuano semplice nel codice, che vi aiuterà a fare le cose semplici nella tua testa

Sembra ciò che si vuole raggiungere è più legata alle stringhe, che per l'etichetta.

Vi suggerisco di ottenere il testo dell'etichetta, quindi lavorare su di essa in modo indipendente, quindi associare di nuovo al vostro etichetta:

QString text = message.text();

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

message.setText(text);

Inoltre, l'errore che stai avendo è probabilmente dovuto al fatto che si tenta di modificare direttamente Message.Text (), che è un const di riferimento: ovviamente non è possibile modificare qualcosa che è const.

Credo che ciò che si tenta di raggiungere può essere fatto utilizzando QString: : replace () . Dovrete usare le espressioni regolari per questo, quindi se non hai familiarità con essa, potrebbe essere difficile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top