Qstring dividere più delimitatori
Domanda
Ho problemi a dividere correttamente un Qstring. A meno che non mi sbagli, per più delimitatori ho bisogno di un regex e non riesco a capire un'espressione perché sono abbastanza nuovo per loro.
La stringa è input di testo da un file:
F 523/845/1 524/846/2 562/847/3 564/848/4
Ho bisogno di ogni numero separatamente da mettere in un array.
Alcuni codici ....
QStringList x;
QString line = in.readLine();
while (!line.isNull()) {
QRegExp sep("\\s*/*");
x = line.split(sep);
Qualche puntatore?
Saluti
Soluzione
Cambia la tua espressione regolare in questo modo:
QRegExp sep("(\\s+|/)");
poi x
avrà ogni numero.
Altri suggerimenti
Ho trovato abbastanza utile provare in modo interattivo Regex. Oggi ci sono anche molti strumenti online, ad esempio: http://gskinner.com/regexr/
Puoi mettere lì il tuo testo di ricerca e giocare con il regex per vedere cosa è abbinato quando.
È possibile utilizzare la funzione STRTOK, che ha diviso un QString con uno o più token diversi.
Sarebbe così:
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, " /");
}
Puoi impostare tutti i token di cui hai bisogno. Per ulteriori informazioni, visitare la pagina CPLUSPLUS di questa particolare funzione. http://www.cplusplus.com/reference/cstring/strtok/
Saluti!.