Pregunta

Tengo problemas para dividir una QString correctamente. A menos que esté equivocado, con múltiples delimitadores necesito una regex, y parece que no puedo encontrar una expresión ya que soy bastante nuevo para ellos.

La cadena es la entrada de texto de un archivo:

F 523/845/1 524/846/2 562/847/3 564/848/4

Necesito cada número por separado para poner en una matriz.

Algunos códigos ...

QStringList x;
QString line = in.readLine();
        while (!line.isNull()) {
            QRegExp sep("\\s*/*");

            x =  line.split(sep);

¿Algún consejo?

Salud

¿Fue útil?

Solución

Cambie su expresión regular de esta manera:

QRegExp sep("(\\s+|/)");

después x tendrá cada número.

Otros consejos

Me pareció bastante útil probar interactivamente de Regex. Hoy en día hay muchas herramientas en línea incluso, por ejemplo: http://gskinner.com/regexr/

Puede poner su texto de búsqueda allí y jugar con el Regex para ver qué se combina cuando.

Puede usar la función STRTOK, que divide una QString con una o más tokens diferentes.

Sería así:

    QString a = "f 523/845/1 524/846/2 562/847/3 564/848/4";
    QByteArray ba = a.toLocal8Bit();
    char *myString = ba.data();
    char *p = strtok(myString, " /");

    while (p) {
        qDebug() << "p : " << p;
        p = strtok(NULL, " /");
    }

Puede establecer tantas tokens como necesite. Para obtener más información, visite la página Cplusplus de esta función en particular. http://www.cplusplus.com/reference/cstring/strtok/

¡Saludos!.

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