QString, etichette rimuovere e contenuti?
Domanda
Message.Text () è una QString.
Voglio rimuovere una parte di testo.
Il testo può essere:
- normale: "
This is a text
" - 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.
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 ??p>
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.