VB.NET Text sortieren

12/08/2017 20:43 Temx Keys#1
Hallo,

ich habe eine Frage und zwar habe ich eine RichTextBox1 mit Inhalt von Text:

Herr Christian Wolf
Herr Markus Stein

Wie kann ich den Vornamen also Christian & Markus löschen, sodass am Ende nur der Nachname da steht?
12/09/2017 02:58 IceTrailer#2
Mit String.Split solltest du den String (RichTextBox1.Text) splitten und entsprechend einen neuen String bauen, ohne den Vornamen.
12/09/2017 11:46 xShizoidx#3
1. Du musst alle Wörter pro Zeile einzeln haben. Dies kannst du z.B. machen, indem du alles in einer Zeile bei jeder Leertaste mit der Split Funktion trennst.
2. Du entfernst in jeder Zeile einfach jedes zweite Wort, welches du zuvor ja mit der Split Funktion ermittelt hast

Ergebnis:
Code:
        Dim result As String

        For Each line As String In RichTextBox1.Lines
            Dim parts = line.Trim().Split(" ")
            result += line.Replace(parts(1), "") + Environment.NewLine
        Next

        RichTextBox1.Text = result
12/11/2017 10:22 ℓ℮ዞni™#4
Falls du es noch nicht alleine hinbekommst kann ich dir gerne per TV helfen
12/11/2017 13:58 Onkelmat#5
RichTextBox1.Text.Replace("Christian","").Replace( "Markus","");

so wäre es bei C#, sollte aber auch bei dir klappen.
12/11/2017 14:01 Ludder231#6
Quote:
Originally Posted by Onkelmat View Post
RichTextBox1.Text.Replace("Christian","").Replace( "Markus","");

so wäre es bei C#, sollte aber auch bei dir klappen.
Schlechte Lösung. Ich denke er hätte es gerne dynamisch wie die oberen beiden Vorschläge. :)
12/11/2017 19:10 Onkelmat#7
Quote:
Originally Posted by Ludder231 View Post
Schlechte Lösung. Ich denke er hätte es gerne dynamisch wie die oberen beiden Vorschläge. :)
Naja also von der Codelänge wesentlich besser :)
und dynamisch wäre ja wohl auch kein Problem:

private voidLöscheVornamen(string Vorname1, string Vorname2)
{
RichTextBox1.Text.Replace(Vorname1,"").Replace( Vorname2,"");
}


er könnte natürlich auch ein Objekt mit den zu entfernenden Namen übergeben und dann mit einer Schleife alle löschen.
12/11/2017 19:53 Serraniel#8
Quote:
Originally Posted by Onkelmat View Post
Naja also von der Codelänge wesentlich besser :)
und dynamisch wäre ja wohl auch kein Problem:

private voidLöscheVornamen(string Vorname1, string Vorname2)
{
RichTextBox1.Text.Replace(Vorname1,"").Replace( Vorname2,"");
}


er könnte natürlich auch ein Objekt mit den zu entfernenden Namen übergeben und dann mit einer Schleife alle löschen.
Welchen Vorteil bringt dann bitte diese Funktion? Dann kannst du auch direkt das Replace aufrufen wo du es gerade brauchst...
12/11/2017 20:44 xShizoidx#9
Quote:
Originally Posted by Onkelmat View Post
Naja also von der Codelänge wesentlich besser :)
und dynamisch wäre ja wohl auch kein Problem:

private voidLöscheVornamen(string Vorname1, string Vorname2)
{
RichTextBox1.Text.Replace(Vorname1,"").Replace( Vorname2,"");
}


er könnte natürlich auch ein Objekt mit den zu entfernenden Namen übergeben und dann mit einer Schleife alle löschen.
Deine Methode macht es eher unübersichtlicher, weil du eine void Methode hast, welche einfach irgendwelche Werte verändert, welche du nicht die Methode übergeben hast, sodass jemand nicht direkt aus der Ferne sieht, dass sich dort Werte ändern. Zudem macht es nicht wirklich Sinn für einen einfachen Replace eine Methode zu schreiben.
12/11/2017 21:25 Onkelmat#10
Quote:
Originally Posted by xShizoidx View Post
Deine Methode macht es eher unübersichtlicher, weil du eine void Methode hast, welche einfach irgendwelche Werte verändert, welche du nicht die Methode übergeben hast, sodass jemand nicht direkt aus der Ferne sieht, dass sich dort Werte ändern. Zudem macht es nicht wirklich Sinn für einen einfachen Replace eine Methode zu schreiben.
Naja also eine Zeile ist wohl übersichtlicher als die for Geschichte von xShizoidx. Mit mehr Hintergrund könnte man auch meine Methode entsprechend anpassen. Ich fands als Methode geschrieben verständlicher was ich machen würde.


Ich weiß ja nicht genau was er haben will - das sind Möglichkeiten. Er kann wie Serraniel es sagt auch direkt die Replace Methode verwenden. Ich weiß nicht ob er einfach einmalig die zwei Namen löschen will oder ob er das dynamisch machen will.
Wenn man sich damit länger beschäftigt geht alles besser und kürzer.
12/11/2017 21:35 xShizoidx#11
Quote:
Originally Posted by Onkelmat View Post
Naja also eine Zeile ist wohl übersichtlicher als die for Geschichte von xShizoidx. Mit mehr Hintergrund könnte man auch meine Methode entsprechend anpassen. Ich fands als Methode geschrieben verständlicher was ich machen würde.


Ich weiß ja nicht genau was er haben will - das sind Möglichkeiten. Er kann wie Serraniel es sagt auch direkt die Replace Methode verwenden. Ich weiß nicht ob er einfach einmalig die zwei Namen löschen will oder ob er das dynamisch machen will.
Wenn man sich damit länger beschäftigt geht alles besser und kürzer.
Bei mir ist das ein Lösungsvorschlag und nicht direkt um eine Methode, welche ich für ihn erstellen will, Methoden kann er sich immer noch selber zusammenbasteln, falls er welche benötigt, dadurch lernt er dann auch noch etwas. Wie gesagt sorgt dein Vorschlag, eine Replace Methode in eine seperate von dir erstellte void Methode zu packen eher für Unübersichtlichkeit. Wenn du eine Methode ohne Rückgabewert ausführst, dann erwartest du auch nicht direkt, dass diese etwas verändert, was du nicht übergeben hast. Schau dir mal die Stringfunktionen von VB.Net an. Replace gibt ja auch etwas zurück und zwar einen String, darum geht es mir, wenn es um Übersichtlichkeit geht.
12/11/2017 21:40 Onkelmat#12
Ja, auf jeden Fall haben wir de Frage wohl gelöst. Er kann sich ja jetzt das zusammensuchen was er braucht. Eine Methode mit Rückgabe wäre ok, jeder wie er´s will ;)
12/12/2017 13:15 th0rex#13
Quote:
Originally Posted by xShizoidx View Post
Wenn du eine Methode ohne Rückgabewert ausführst, dann erwartest du auch nicht direkt, dass diese etwas verändert, was du nicht übergeben hast. Schau dir mal die Stringfunktionen von VB.Net an. Replace gibt ja auch etwas zurück und zwar einen String, darum geht es mir, wenn es um Übersichtlichkeit geht.
Was? Wo lebst du denn. Wir sind hier in einer objekt orientierten Sprache, da ändern nicht konstante Funktionen (die C# bzw. VB.net afaik ja nichtmal hat) doch andauernd irgendeinen State, und das erwartet man auch.