vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Substring 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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Substring aus String 
Autor: sv00010
Datum: 10.02.16 12:43

Mit LastIndexOf nach der Position des letzten Leerzeichen suchen und danach mit IsNumeric die Position der ersten und der letzen Zahl herrausfinden.
Bei der Position des letzten Leerzeichen +1 mit IsNumeric anfangen zu suchen und jedes Zeichen überprüfen.
Sich die letzte Position mit einer Zahl drin merken und dann von der Position des letzten Leerzeichen +1
bis zu dieser den String mit Mid kopieren.

https://msdn.microsoft.com/de-de/library/system.string.lastindexof%28v=vs.80%29.aspx

https://msdn.microsoft.com/de-de/library/6cd3f6w1%28v=vs.90%29.aspx

https://msdn.microsoft.com/de-de/library/3sh1xas1%28v=vs.80%29.aspx
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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))
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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