Seite 1 von 1
Qstring List Split....
Verfasst: 18. Mai 2006 09:53
von jogibear9988
Hallo,
Ich möchte einen String:
"aa/bb/cc" -f -g "/aa/gg jj ii" -ff
so zerlegen, das an leerzeichen getrennt wird, aber die sachen in anführungszeichen zusammen bleiben, d.h. später soll
"aa/bb/cc"
-f
-g
"/aa gg jj ii"
-ff
enthalten sein???
ideen??? regexp??
Verfasst: 18. Mai 2006 09:57
von Christian81
Das habe ich dir doch in den anderen Thread schon gezeigt.
Ein RegExp würde auch gehen, aber vorkauen willl Dir das sicher keiner - musst schon selbst ein wenig überlegen wie die aussehen könnte... danach kann man ja evtl. was zu sagen.
qt 4 sourcen...
Verfasst: 18. Mai 2006 10:22
von jogibear9988
ja danke mal... bin nich sehr fit in regulären ausdrücken. werds dann wahrscheinlich mit einer schleife machen und mir den string selbst zerpflücken...
den at4 souce finde ich grad auch nicht, und die qt seite ist im moment arschlahm!!
Verfasst: 18. Mai 2006 10:32
von Christian81
Dann nimm einfach QString(List)::split() und gehe alle elemente durch. Wenn sie mit '"' beginne, aber nicht mit '"' enden, füge dieses und das nächste Element zusammen und schau wieder ob es jetzt mit '"' endet...
Code: Alles auswählen
QStringList s1 = QString::split(...);
QStringList s2;
for(int i = 0; i < s1.count(); i++) {
if(s1[i].startWith('"')) {
if(s1[i].endWith('"') {
s2.append(s1[i]);
} else {
QString s = s1[i];
for(int j = i+1; j < s1.count(); j++) {
s += s1[j];
if (s.endsWith('"')) {
s2.append(s);
break;
}
}
} else
s2.append(s1[i]);
}
danke...
Verfasst: 18. Mai 2006 11:17
von jogibear9988
danke... musste es nur noch ein bischen ändern, nutze qt 3:
Code: Alles auswählen
QStringList lst( );
QStringList s2;
for(int i = 0; i < lst.count(); i++)
{
if(lst[i][0] == '"')
{
if(lst[i][lst[i].length()-1] == '"')
{
s2.append(lst[i]);
}
else
{
QString s = lst[i];
s += " ";
for(int j = i+1; j < lst.count(); j++)
{
s += lst[j];
if (s[s.length()-1] == '"')
{
s2.append(s);
i=j;
break;
}
else
s += " ";
}
}
}
else
s2.append(lst[i]);
}
Verfasst: 18. Mai 2006 11:24
von Christian81
War ja auch nur kurz aus dem Kopf hingeschrieben
