gerz0ckerz
Goto Top

Wie lese ich einen String nach einem mehrfach vorkommenden Buchstaben aus?

Hallo,


um es zu verdeutlichen, ich möchte aus einen String (Bsp.: ich/bin/ein/string/blabla) die letzten Buchstaben auslesen in diesem Fall wäre es blabla.

Ich kann übrigens auch nicht mit Index arbeiten, da der String vom User frei wählbar ist wodurch sich die Länge der Buchstaben verändert.

Danke im Vorraus. face-smile

Mfg
GERz0cKErZ

Content-Key: 301288

Url: https://administrator.de/contentid/301288

Printed on: April 18, 2024 at 12:04 o'clock

Mitglied: 114757
114757 Apr 08, 2016 updated at 14:07:24 (UTC)
Goto Top
Moin.
Da gibt es mehrere Möglichkeiten:

Variante 1:

Splitte den String anhand des Slashes (/) mit der Funktion Split() in ein Array und verwende UBound(array) um den letzten Wert aus dem Array zu ermitteln und als Index für den Abruf aus dem Array zu nutzen.

Variante 2:

Benutze die Funktion InStrRev() um den Index der Position des letzten Slashes zu ermitteln. Mit diesem Index + 1 kannst du dann die Funktion MID() füttern.

Variante 3:

Regular Expressions verwenden. Aber damit fang ich gar nicht erst an, das sind 100% böhmische Dörfer für dich face-wink

Gruß jodel32
Member: GERz0cKErZ
GERz0cKErZ Apr 08, 2016 at 14:24:19 (UTC)
Goto Top
Vielen Dank! Das hat mich schonmal in die Nähe der Lösung gebracht. ;)

Zitat von @114757:
Splitte den String anhand des Slashes (/) mit der Funktion Split() in ein Array und verwende UBound(array) um den letzten Wert aus dem Array zu ermitteln und als Index für den Abruf aus dem Array zu nutzen.

Ich habe es nun zu Testzwecken so gemacht:

Dim Split = txtFilePath.Text.ToString.Split("/")  
            MsgBox(UBound(Split) + 1)
            For a = 0 To UBound(Split)
                MsgBox(Split(a))
            Next

Hier wird mir alles aus dem Array angezeigt, aber wie bekomme ich den letzten Abschnitt? Gibt es bei einem Array so etwas wie Array.ZeigeLetztenAbschnitt?
Mitglied: 114757
Solution 114757 Apr 08, 2016 updated at 14:36:59 (UTC)
Goto Top
OK hier geht es um VB.net, ich war wegen der Kategorie von VBA ausgegangen. Das nächste mal bitte direkt im Post angeben. Danke.

Ist aber kein Problem, in VB.net bekommst du in Länge eines Array mit
DeinArray.length()
Davon ziehst du 1 ab dann hast du den letzten Index...fertsch

Dim arrString() as String = txtFilePath.Text.Split("/")   
msgbox(arrString(arrString.length()-1))
Member: GERz0cKErZ
GERz0cKErZ Apr 08, 2016 at 14:41:02 (UTC)
Goto Top
Wird beim nächsten Post dazugeschrieben, danke!

Liege ich damit richtig, dass wenn man bei "String".Lenght - 1 den letzten Wert bekommt?
Mitglied: 114757
114757 Apr 08, 2016 updated at 15:23:00 (UTC)
Goto Top
Zitat von @GERz0cKErZ:
Liege ich damit richtig, dass wenn man bei "String".Lenght - 1 den letzten Wert bekommt?
String ist ein reserviertes Keyword in VB.Net du solltest einen anderen Namen für die Variable wählen ...Siehe mein Beispiel!
Member: GERz0cKErZ
GERz0cKErZ Apr 08, 2016 at 15:28:14 (UTC)
Goto Top
Das ist mir klar, aber als String war keine Variable gemeint sondern irgendein String, deswegen auch "". Hat sich aber schon geklärt, danke.
Mitglied: 114757
114757 Apr 08, 2016 updated at 15:41:48 (UTC)
Goto Top
Auch bei einem String wäre das nicht korrekt. Das Length() liefert nur bei einem Array die Anzahl der Elemente in diesem face-smile Im Gegensatz dazu wäre das bei einem String die Anzahl der Zeichen des Strings.
Member: GERz0cKErZ
GERz0cKErZ Apr 08, 2016 updated at 18:37:31 (UTC)
Goto Top
Da hätte ich auch selber draufkommen können... ;)
Danke nochmals!

Habe übrigens noch eine schnelle Frage:
Ich habe einen Webclient der per Button ein Video herunterlädt, wenn der Download abgeschlossen ist und ich wieder auf den button drücke lädt er die Datei garnicht erst neu runter sondern es kommt sofort die Meldung, dass der Download abgeschlossen wäre. Wie setze ich den WC zurück oder restartet ihn? Habe wenig bis gar keine Ahnung von WebClient.
Mitglied: 114757
114757 Apr 08, 2016 updated at 22:05:43 (UTC)
Goto Top
Das liegt daran das der WebClient das File cached und beim erneuten Abruf das File aus dem Cache auf die Platte geschrieben wird, deswegen ist er so schnell fertig.
Jetzt hast du zwei Möglichkeiten:
Entweder du fügst bei jedem Aufruf einen URL-Parameter mit einem zufällig generierten String hinten an die Download-URL an dann triggerst du jedes mal einen kompletten Download von der Quelle.
https://domain.de/filexyz.zip?1222772652793
Praktikablerweise nutzt man hier oft die Math.Random Funktionen oder auch die Ticks Eigenschaft des DateTime Objekts zur Generierung des Wertes.

Oder du nutzt statt des WebClient einen HTTPRequest.
Member: GERz0cKErZ
GERz0cKErZ Apr 08, 2016 at 22:06:20 (UTC)
Goto Top
So einfach? Und erneut, danke!!
Member: Biber
Biber Apr 08, 2016 at 22:09:35 (UTC)
Goto Top
[OT]
Neulich im Bereich "VB for Applications"...
... in der Frage "Wie lese ich einen String nach einem mehrfach vorkommenden Buchstaben aus?"...

...in der es eigentlich um das letzte Element in einem Array ging...

... und weder um Strings noch um mehrfach vorkommende Buchstaben noch um VBA...

...da sacht doch TO unvermittelt ...
Zitat von @GERz0cKErZ:

Ich habe einen Webclient der per Button ein Video herunterlädt, wenn der Download abgeschlossen ist und ich wieder auf den button drücke lädt er die Datei garnicht erst neu runter sondern es kommt sofort die Meldung, dass der Download abgeschlossen wäre. Wie setze ich den WC zurück oder restartet ihn? Habe wenig bis gar keine Ahnung von WebClient.

Ach was, das glaubt mir doch keiner...

Wir Bremer würden derartige Vorkommnisse ja nur durch die Blume bewerten. Wenn überhaupt.
Wahrscheinlich würden wir schulterzuckend sagen
"Wer den Alkohol nicht verträgt, der sollte ihn besser aus dem Balg lassen."

Grüße
Biber, der dachte, ihn könnte hier im Forum nix mehr überraschen
[/OT]
Mitglied: 114757
114757 Apr 08, 2016 updated at 22:14:55 (UTC)
Goto Top
ja ja der @Biber ... der den verbrauchten Alk gleich noch zum Baum trägt face-smile

Komm ich schmeiss noch ne Runde ... is ja eh Freidaach.
Member: GERz0cKErZ
GERz0cKErZ Apr 08, 2016 at 22:24:41 (UTC)
Goto Top
face-smile ich wollte nicht extra einen Thread nur für so eine kleine Frage erstellen face-smile