Seite 1 von 1

Problem mit RemoveString()

Verfasst: 19.03.2009 14:36
von NonFreak
Ich habe eine Zeile aus der Tabellenkalkulation als csv-Datei mit Semikolon als Feldtrenner exportiert. Die einzelnen Felder will ich nun von links nach rechts ermitteln. Unter Verwendung von RemoveString() erhalte ich teilweise falsche Ergebnisse. Was mache ich falsch? Ersetze ich RemoveString() durch andere Funktionen, klappt alles.

Code: Alles auswählen

Define.s zeile, links
zeile="text1;text2;;text3;;"
For i=1 To 5
  links=Left(zeile,FindString(zeile,";",1))
  zeile=RemoveString(zeile,links)
  Debug Str(i)+"Links: "+links+"       Rest: "+zeile
Next
Debug "Das Gleiche ohne Renovestring"
zeile="text1;text2;;text3;;"
For i=1 To 5
  links=Left(zeile,FindString(zeile,";",1))
  zeile=Right(zeile,Len(zeile)-Len(links))
  Debug Str(i)+"Links: "+links+"       Rest: "+zeile
Next
Das Ergebnis sieht folgendermaßen aus:
1Links: text1; Rest: text2;;text3;;
2Links: text2; Rest: ;text3;;
3Links: ; Rest: text3
4Links: Rest: text3
5Links: Rest: text3
Das Gleiche ohne Renovestring
1Links: text1; Rest: text2;;text3;;
2Links: text2; Rest: ;text3;;
3Links: ; Rest: text3;;
4Links: text3; Rest: ;
5Links: ; Rest:

Verfasst: 19.03.2009 14:50
von Kaeru Gaman
weil removestring mit ";" ausgeführt sämtliche ";" entfernt.
beim schritt der zu 3Links führt, werden also alle ";" entfernt, danach sind keine mehr übrig zum bearbeiten.

benutze StringField um zu den Feldinhalten OHNE trennzeichen zu kommen,
dann kannst du die Feldinhalte mit RemoveString entfernen wenn sie einmalig sind.
ansonsten nutze eine beschneidefunktion die nach position vorgeht.
ähnlich wie im zweiten Teil deines Codes, nur dass du dafür Mid() benutzen solltest.

Verfasst: 19.03.2009 14:59
von NonFreak
War ein klarer Denkfehler von mir.
Danke Ol'Man (ich bin aber sicher älter als Du: 69)

Verfasst: 19.03.2009 15:06
von Kaeru Gaman
> (ich bin aber sicher älter als Du: 69)

ja, das bist du, ganze drei Zahrjehnte, aber das macht nix... :mrgreen:

Verfasst: 19.03.2009 18:22
von Waldixxl
Hallo NonFreak
Für solche Aufgaben bietet PB auch die Funktion StringField() an. :wink:

Code: Alles auswählen

   zeile$="text1;text2;;text3;;aus" 
   For k=1 To 6
      Debug StringField(zeile$, k, ";")
   Next

Verfasst: 19.03.2009 20:02
von NonFreak
Danke und beste Grüße Euch beiden; das ist das Schöne an diesem Forum, dass man schnell und kompetent Hilfe bekommt.