Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

VB Stringverarbeitung

Empfohlene Antworten

Veröffentlicht

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.

Vielleicht hilft Dir das:

InStr-Funktion wird verwendet, um die Position des ersten Auftretens einer Zeichenfolge innerhalb einer anderen Zeichenfolge zurückzugeben.

Mid-Funktion wird verwendet, um eine bestimmte Anzahl von Zeichen aus einer Zeichenfolge zu liefern.

Nicki

Sind da Leerzeichen zwischen den Spalten?

ja, unterschiedlich viele.

in der 4. Spalte zwischen den "" können auch noch welche sein.

Aber in den Spalten die du selektieren willst sind keine mehr, oder?

Original geschrieben von Hippocrates

Aber in den Spalten die du selektieren willst sind keine mehr, oder?

Nur in der 4. (wird auch benötigt), in den anderen nicht

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.

Ich würde Dir empfehlen mit InStr, Mid, Trim und vielen Variablen zu arbeiten.

(Aber nicht damit durcheinanderkommen)

Da Trim alle Leerzeichen links und rechts "wegradiert"!

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

Wenn's klappt ist's doch super!!! ;)

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.