For Each Line im String?

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 24 Antworten in diesem Thema. Der letzte Beitrag () ist von Dksksm.

    For Each Line im String?

    Hallo,
    ich hab ne kleine Frage, wenn ich einen größeren txt im String hab, dann sind doch theoretisch auch Zeilen Umbrüche drinne?
    Naja eigentlich ja nicht, aber gibt es so etwas wie einen MultiLineString?
    Damit ich halt folgendes machen kann:

    VB.NET-Quellcode

    1. Dim QTTXT As String = StreamReader.ReadToEnd
    2. For Each line in QTTXT.ToString.Lines
    3. ' ... hier dann ein paar If anweisungen.
    4. Next
    Meine Software findet ihr HIER, bin in Android und Windows entwicklung aktiv.

    Falls ihr meine begehrte Movie Box für Android haben wollt, diese findet ihr auch auf meiner Website oder hier direkt download.
    Man beachte aber, dass nicht alles Zeilenumbrüche sind. Es gibt auch Wraps.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @Counterbug

    ist es dann:

    VB.NET-Quellcode

    1. For Each line In readStream.ReadLine
    2. Next


    @Trade Was sind warps?
    Meine Software findet ihr HIER, bin in Android und Windows entwicklung aktiv.

    Falls ihr meine begehrte Movie Box für Android haben wollt, diese findet ihr auch auf meiner Website oder hier direkt download.
    Ein Wrap entsteht, wenn Du schreibst und die Zeile zu Ende ist und er in ne neue geht. Das ist aber dann kein Zeilenumbruch, der kommt nur, wenn Du "Enter" drückst.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @Trade
    ich benutze das um einen Quelltext zu lesen, gibt es da auch warps?


    und das mit dem For Each line in StreamReader.ReadLine geht irgendwie nicht?

    ich glaub ich mach etwas flasch ? aber was, im Stream Reader gibt es ja nur Read, ReadtoEnd, und ReadLine
    Meine Software findet ihr HIER, bin in Android und Windows entwicklung aktiv.

    Falls ihr meine begehrte Movie Box für Android haben wollt, diese findet ihr auch auf meiner Website oder hier direkt download.
    Äh, ich hoffe Du weißt, was ​ReadLine macht? Schau halt bei MSDN. Du iterierst durch die ganze Datei und willst dann eine Methode als Auflistung nehmen... wat?
    ReadLine macht das doch schon selber, also brauchst Du keine Schleife.

    tarkelasgang schrieb:

    gibt es da auch warps?

    Woher soll ich das wissen? Ist doch aber auch völlig egal, wollte das nur sagen, falls Du das mal hast und dann nicht weißt, warum das dann nicht wie erwartet ausliest.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @Trade ehrlichgesagt ich verstehs kein stück
    könntest du mir ein beispiel geben?
    Meine Software findet ihr HIER, bin in Android und Windows entwicklung aktiv.

    Falls ihr meine begehrte Movie Box für Android haben wollt, diese findet ihr auch auf meiner Website oder hier direkt download.
    Nö. msdn.microsoft.com/de-de/libra…r.readline(v=vs.110).aspx
    Da hast Du ganz unten ein Beispiel, da kannst Du Dir das anschauen und dann so übernehmen und anpassen, je nachdem, wie Du es brauchst. gl
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @Trade das hab ich schon gesehen, er mach da aber garnichts bei

    VB.NET-Quellcode

    1. Do While readStream.Peek() >= 0
    2. MessageBox.Show(readStream.ReadLine(), "")
    3. Loop

    , er überspringt das einfach
    Meine Software findet ihr HIER, bin in Android und Windows entwicklung aktiv.

    Falls ihr meine begehrte Movie Box für Android haben wollt, diese findet ihr auch auf meiner Website oder hier direkt download.
    Dann ist wohl die Bedingung nicht wahr.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    ......

    ohne witz, ich wusste nicht das wenn ich vorher read stream to end mache, dass dann ReadStream.Peek = -1 ist -.- also einfach den (thepage = ..Readtoend) weggelassen und es geht -.- , hätte mir auch einer sagen können :P :D
    Meine Software findet ihr HIER, bin in Android und Windows entwicklung aktiv.

    Falls ihr meine begehrte Movie Box für Android haben wollt, diese findet ihr auch auf meiner Website oder hier direkt download.
    @Dksksm
    ​Eine ganze Zahl, die das nächste zu lesende Zeichen darstellt, oder -1, wenn keine zu lesenden Zeichen vorhanden sind oder der Stream keine Suchvorgänge unterstützt.
    Meine Software findet ihr HIER, bin in Android und Windows entwicklung aktiv.

    Falls ihr meine begehrte Movie Box für Android haben wollt, diese findet ihr auch auf meiner Website oder hier direkt download.
    Meine Meinng:

    Ich kann absolut niemandem empfehlen die Funktion .Peek() oder .EndOfStream() zu verwenden, wenn es nicht unbedingt notwendig ist. Das ist ja dann genauso unleserlich und hässlich wie in c/c++ ;.)
    Das ist schonmal ne potentielle Fehlerquelle.
    Nicht nur Anfänger, sondern auch fortgeschrittene Programmierer vergessen schnell mal nen Stream zu closen oder in nem Using-Block zu verwenden. Wobei der Using-Block die schönere Variante ist.
    Wieso haben wir denn sonst so ein tolles Framework?
    Genauso wenig halte ich was von Stream's. Klar, die können ultra praktisch sein, sind mächtig und haben ihre Daseinsberechtigung.
    Trotzdem vermeide ich Streams/StreamReaders, wo immer ich kann.

    Alle Zeilen in einem Rutsch einlesen UND in ein Array packen? -> ReadAllLines()
    Alle Zeilen in einem Rutsch einlesen UND in eine List(Of String) packen? -> ReadLines().ToList()
    Anmerkung: ReadAllLines().toList() verursacht ein unnötiges kopieren von String() nach List(Of String)
    Einzelne Zeilen zum letztmöglichen Zeitpunkt einlesen: -> for each + ReadLines()

    markus.obi schrieb:

    Trotzdem vermeide ich Streams/StreamReaders, wo immer ich kann.
    halte ich persönlich für einen Fehler.
    Gut, wenns um einfache Textdateien geht, dann kann man das natürlich auch einfacher lösen (ich würde übrigens File.ReadLines() File.ReadAllLines() vorziehen, solange man den Inhalt nur weiterverarbeiten, nicht aber 1zu1 verwenden will). Aber Streams können ja viel mehr als das, schau dir z.B. mal CSCore an, ohne Streams würde sowas gar nicht funktionieren.
    @markus
    Ich benutze den StreamReader (fast) aussschliesslich in Using Blöcken, das bekommt man auch meistens hin, ich habe nur einen Fall, wo ich mehr als einen Stream gleichzeitig aufhaben muss und ich mich für eine andere Vorgehensweise entschieden habe. Meine Frage wurde im Übrigen nicht beantwortet.