Qstring List Split....

Verschiedenes zu Qt
Antworten
jogibear9988
Beiträge: 12
Registriert: 17. April 2006 14:04

Qstring List Split....

Beitrag 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??
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
jogibear9988
Beiträge: 12
Registriert: 17. April 2006 14:04

qt 4 sourcen...

Beitrag 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!!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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]);
}

MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
jogibear9988
Beiträge: 12
Registriert: 17. April 2006 14:04

danke...

Beitrag 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]);
            }


Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

War ja auch nur kurz aus dem Kopf hingeschrieben :)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten