Pregunta

message.Text () es una QString.

Quiero quitar algo de texto.

El texto puede ser:

  1. Normal: "This is a text"
  2. Con una etiqueta: "<label1>something</label1>This is a text"

En primer lugar, encontrar si el texto tiene la etiqueta:

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

Por lo tanto, si tiene, quiero quitar la primera parte, para tener un texto normal "Se trata de un texto".

He intentado esto:

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

Pero tengo compilador C2663 de error.

También sabe que el message.Text().remove(QChar('<label1'), Qt::CaseInsensitive); es otra manera de hacerlo. Pero en mi caso, la parte entre la etiqueta es unkwnow.

Puede ser <label1>something</label1> o <label1>oisdioadj</label> o <label1>7</label1> ....

¿Alguna idea?

Saludos.

¿Fue útil?

Solución

Trate lo siguiente:

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

Otros consejos

Mi consejo aquí:. Las cosas siguen simple en su código, que le ayudará a hacer las cosas simples en su cabeza

Parece que lo que quiere lograr está más relacionada con las cadenas, que a la etiqueta.

Yo sugiero que el texto de la etiqueta, y luego trabajar en él de forma independiente, a continuación, asociar de nuevo a la etiqueta:

QString text = message.text();

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

message.setText(text);

Además, el error que está teniendo es probablemente debido al hecho de que intenta modificar directamente message.text () que es un const de referencia: es evidente que no se puede modificar algo que es const.

Creo que lo que se intenta lograr que se puede hacer utilizando QString: : replace () . Vas a tener que usar expresiones regulares para eso, así que si no está familiarizado con él, podría ser difícil.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top