QString dividir múltiples delimitadores
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
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!.