Zum Inhalt springen

VB Stringverarbeitung


Vampire

Empfohlene Beiträge

Hallo zusammen,

ich hab folgendes Problem, ich lese aus einer Steuerungsdatei die Werte ein.

Dabei sieht eine Zeile z.B. folgendermaßen aus:

S * DEA20 "0020" 1 1 111 114

S * AEV "AEV" 1 1 1 3

Die Informationen die ich benötige sind hier aber nur DEA20, 0020, 111 und 114 in der zweiten Zeile AEV, AEV, 1 und 3.

Das Problem ist nun, ich weiß nicht wieviel Blanks zwischen den Werten sind, das kann varieren.

Weiß da jemand eine Lösung, wie ich an die Werte komme?

Die Einzigen konstanten Sachen sind S, * und die beiden 1er in der 5 und 6 Spalte.

Ich habe immer 8 Spalten, benötigt werden halt die Spalten 3, 4, 7 und 8.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bin jetzt gleich weg.

Habe gerade allerdings kein VB da

Aber, wie NickiD, schon sagte, schau dir mal die Funktionen Instr, Mid und len, ggf. noch left und right an

Instr: Ermittelt die Position eines Zeichens in einem String

Mid: Damit kannst du einen Teil eines strings selektieren (Du kannst die Anfangs- und Endposition angeben) Sorry, du gibst die Länge an

Len: Ermittelt die Länge eines Strings

Left: Da kannst du vom ersten Zeichen bis zu einem angegebenen Zeichen selektieren.

Right: Das gleiche von Rechts.

Kann auch sein, dass es sich um die Länge handelt

Du kannst mit diesen Funktionen deine Spalten einer Variablen übergeben.

Z.B.

posstern = InStr(1, zeichen, "*")

posstern2 = Instr(postern,zeichen, " ")

spalte1 = mid(zeichen,posstern1,posstern1-posstern2)

Mir ist gerade aufgefallen, das ich was vergessen habe.

Wobei Zeichen dein String ist.

Aber so weit ich weiß, mag vb aber keine 2 " in einem String, oder irre ich mich.

Du kannst auch nach " " (Leerzeichen) Suchen.

Mußt dich halt von Leerzeichen zu Leerzeichen ziehen. Von rechts nach links. Du kannst ja die Position angeben.

Hoffe ich konnte die als Newbi helfen.

Ich wünsche dir viel Glück dabei.

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich habs mal so gemacht:


li_pos1 = InStr(1, ls_zeile, Chr(34))

li_pos2 = InStr(li_pos1 + 1, ls_zeile, Chr(34))

ls_teil1 = Trim(Left(ls_zeile, li_pos1 - 1))

ls_teil2 = Trim(Mid(ls_zeile, li_pos1 + 1, li_pos2 - li_pos1 - 1))

ls_teil3 = Trim(Right(ls_zeile, Len(ls_zeile) - li_pos2))

ls_temp = Split(ls_teil1, " ")


li_zaehler_temp = 1

For li_zaehler = 0 To UBound(ls_temp)

    If ls_temp(li_zaehler) <> "" Then

        ls_werte(li_zaehler_temp) = ls_temp(li_zaehler)

        li_zaehler_temp = li_zaehler_temp + 1

    End If

Next li_zaehler

ls_werte(li_zaehler_temp) = ls_teil2

ls_temp = Split(ls_teil3, " ")

For li_zaehler = 0 To UBound(ls_temp)

    If ls_temp(li_zaehler) <> "" Then

        li_zaehler_temp = li_zaehler_temp + 1

        ls_werte(li_zaehler_temp) = ls_temp(li_zaehler)

    End If

Next li_zaehler

Vielleicht nicht unbedingt die schönste Variante, aber hier für reicht es. Und bis jetzt klappts auch... :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

eine gute Beschreibung der Stringzerlegung steht im Buch Visual Basic 6 vom Kofler S.398.

trim() --schneider leerzeichen am ende und am anfang der strings weg

left(s,n) liefert die n ersten Zeichen des Strings

right(s,n) liefert die n letzten Zeichen von s

mid(s,n) liefert die Zeichen ab der n-ten Position

len(s) abzahl der zeichen von s.

usw.

Gruß aokieh

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...