| |
VB.NET - Ein- und UmsteigerSubstring aus String | | | Autor: Ortech | Datum: 10.02.16 10:10 |
| Guten Morgen,
google seit Stunden, finde aber keine Lösung für folg. Problem.
Habe einen String, den ich aus einer Datei einlese, sieht folgendermaßen aus.
dfgkldhfgk 8:4 //sfgasgasg
Ich benötige nur das 8:4
Weiß hier jemand Abhilfe?
Den Kommentar hätte ich bereits weggefiltert, aber für den Text inkl. Leerzeichen vorher hab ich keiune Lösung. Ziwschen dfgkldhfgk und 8:4 ist minimal 1 space dazwischen (kann auch mehr sein). Ebenso zw. 8:4 und dem Kommentar.
Mit der Bitte um Vorschlänge.
Danke. | |
Re: Substring aus String | | | Autor: effeff | Datum: 10.02.16 14:42 |
| Ach, das ist ganz einfach:
Dim strText As String = "lakfkaslfkadfa 8:4//afdöaksjfas"
Dim strErgebnis As String = ""
Dim arr1() As String = strText.Split("/")
Dim arr2() As String = arr1(0).Split(" ")
strErgebnis = arr2(UBound(arr2))
MessageBox.Show(strErgebnis) EALA FREYA FRESENA | |
Re: Substring aus String | | | Autor: Manfred X | Datum: 10.02.16 15:40 |
| Hallo!
Du solltest vielleicht erklären, nach welchen Regeln die Strings,
aus denen Du einen Teilstring ermitteln willst, konstruiert worden sind.
Ein Einzelbeispiel sagt nur wenig aus. | |
Re: Substring aus String | | | Autor: Ortech | Datum: 11.02.16 10:10 |
| Hallo Effeff,
dein Ansatz ist nachvollziehbar, allerdings funktioniert er nur, wenn zw. 8:4 und //ertertz KEIN SPACE sich befindet. Bei mir sind meist mehrere Space da - zumindest jedoch eins. die Split Funktion legt pro entferntes Space einen Array-Eintrag an.
Kann man die "leeren" Arrays einfach aus der arraylist entfernen?
Hallo Manfred X,
Das Text-file (Ascii), welches analysiert werden soll, wurde manuell erstellt und abgespeichert.
Hallo sv00010,
die lastindexof werd ich dann noch veruchen. Danke!
Gruß, Alois | |
Re: Substring aus String | | | Autor: Manfred X | Datum: 11.02.16 11:21 |
| Ohne Kenntnis der Bildungs-Regeln des String !!!
Dim xxx As String = "dfgkldhfgk 8:4 //sfgasgasg"
Dim startindex As Integer = xxx.IndexOf(" "c)
If startindex = -1 Then
MsgBox("Kein Space")
Else
Dim lastindex As Integer = xxx.IndexOf("//", startindex)
If lastindex = -1 Then
MsgBox("Kein // hinter Space gefunden")
Else
Dim subxxx As String = xxx.Substring(startindex, lastindex - _
startindex).Trim
End If
End If | |
Re: Substring aus String | | | Autor: Rippler | Datum: 11.02.16 13:55 |
| Private Function TeilString(s As String) As String
Dim a As String() = Split(s)
a(0) = " "
a(UBound(a)) = " "
TeilString = Join(a).Trim
End Function
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) _
Handles MyBase.Load
MsgBox(TeilString("dfgkldhfgk 8:4 //sfgasgasg"))
End Sub | |
Re: Substring aus String | | | Autor: Manfred X | Datum: 11.02.16 14:09 |
| Es wird vorausgesetzt, daß "Space" nur als Trennzeichen zwischen,
aber nicht innerhalb der Teilstrings vorkommt (z.B. angehängte Leerzeichen)
Beitrag wurde zuletzt am 11.02.16 um 14:32:21 editiert. | |
Re: Substring aus String | | | Autor: HenryV | Datum: 11.02.16 17:41 |
| Dim line As String = "dfgkldhfgk 8:4 //sfgasgasg"
Dim query As IEnumerable(Of String) = line.Split(New Char() {" "c, "/"c}).Where( _
Function(x) x.Trim <> String.Empty)
Debug.Print(query(1)) | |
Re: Substring aus String | | | Autor: Manfred X | Datum: 11.02.16 18:27 |
| Falls im vorderen Teilstring Leeräume vorkommen könnten,
käme eventuell eine //-basierte "Rückwärtslösung" in Betracht.
Dim line As String = "dfg kld hfgk 8:4 //sfga sgasg "
Dim bl As Integer = line.IndexOf("//")
Dim start As Integer = bl
Dim charfound As Boolean = False
Do
start -= 1
charfound = charfound Or line(start) <> " "c
Loop While start > 0 And Not (line(start) = " "c And charfound)
Dim substr As String = line.Substring(start, bl - start).Trim Vielleicht hat noch jemand eine Lösung mit Regular Expressions ....
Beitrag wurde zuletzt am 11.02.16 um 18:38:43 editiert. | |
Re: Substring aus String | | | Autor: HenryV | Datum: 12.02.16 09:23 |
| Hier mit Regex
Imports System.Text.RegularExpressions
Module Module1
Sub Main()
Dim sourcestring as String = "dfg kld hfgk 8:4 //sfga sgasg "
Dim re As Regex = New Regex("\d:\d")
Dim mc as MatchCollection = re.Matches(sourcestring)
Console.WriteLine(mc(0).Groups(0).Value)
End Sub
End Module | |
Re: Substring aus String | | | Autor: effeff | Datum: 12.02.16 13:50 |
| Hier ist noch mal ein Beispiel, welches explizit nur nach erlaubten Zeichen sucht:
Dim strText As String = "akfa asfakdfa akdjfölak asöfkjölaksdf" & _
"asdfaökjlsjkdflöajldfjlaösjdflajksfd afdkjaskjfökasf 8:4//akjfölkasf" & _
"aslkjfalskjdfasdfkdflakjfd asdfkajfdaf"
Dim strErlaubt As String = "0123456789:"
Dim strErgebnis As String = ""
For Each element As Char In strText
If InStr(strErlaubt, element) > 0 Then
strErgebnis = strErgebnis + element
End If
Next
MessageBox.Show(strErgebnis) EALA FREYA FRESENA | |
Re: Substring aus String | | | Autor: minimalist | Datum: 12.02.16 18:14 |
| Das geht auch:
Dim str0 As String = "dfgkldhfgk 8:4 //sfgasgasg"
Dim str As String = ""
For Each ch As Char In str0
If Char.IsDigit(ch) Or ch = ":" Then
str = str & ch
End If
Next
MessageBox.Show(str)
End Sub | |
Re: Substring aus String | | | Autor: Ortech | Datum: 02.03.16 14:09 |
| Sorry für die etwas späte Antwort aufgrund von Prioritätsverschiebungen.
Danke für dei zahlreicen Vorschläge.
Ich konnte mein Problem durch die Kombination eurer Vorschläge lösen.
Schönen Tag noch.
Alois | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevZIP40 Pro DLL
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|