Methode -> Stringdie Wörter in ArrayList

Hallo,
ich lerne seit einigen Wochen C# und habe versucht eine Methode zu programmieren, mit der ich einen String aus dem Parameter, so zerlegen kann, dass die einzelnen Wörter ohne .,!,?,Zeilenumbrüche, usw. in einer ArrayList zurückgegeben werden.

Bin aber leider an eine Schwelle meiner Ideen gekommen und hab mich nach einer Stunde verzweifelten Denkens, dazu entschieden ein paar Fachleute zu fragen.

Wär echt toll wenn mir wer helfen könnte.

Mein Code:
public ArrayList WoerterEinlesen(String text)
{
Char[] trimArr = new Char[5]{’ ', ‚!‘, ‚.‘, ‚?‘, ‚\n‘};
ArrayList words = new ArrayList();
int pos = 0;
int signs = 0;

// D A S I S T E I N B E I S P I E L
// 0 1 2 3 4 5 6 7 8 9

// Solange die Startposition nicht das Ende des Textes erreicht
while (pos + signs 0)
{
// ein neues CharArray, mit so vielen Plätzen
// wie unser Wort lang ist wird erstellt
Char[] chrArr = new Char[signs];

// Solange die Zählervariable i nicht die Länge des Wortes erreicht
for (int i = 0; i

Hallo Conny,

Wenn ich dich richtig verstanden habe dann

denke nicht ganz so kompliziert. Was willst du erreichen?

1: Ungültige Zeichen aus der Zeichenkette entfernen. Das sind zum Beispiel die !,?,. etc.

2: Du möchtest ein Array haben, welches dir jedes Wort zurueckliefert.

Ok, dafür gibt es verschiedene Wege.

1: Via LinQ
2: Mittels regular expression
3: Mittels String Varianten

Welchen Weg du nimmst und wie weit dein Wissensstand ist, weiss ja nun keiner. Von daher gehe ich mal auf den 3 Weg ein :smile:

Für den ersten Schritt, bietet sich die Replace Methode an
Für den zweiten Schritt die Split Methode .

Durchlaufe deine Liste mit den Zeichen die du ausfiltern willst in einer Schleife. Ersetze diese mittels Replace durch „“. Nach der Schleife Splitte deinen String anhandes des " " als Seperator.
Du kannst natürlich auch Replace öfters nacheinander aufrufen. Aber das würde den Source unuebersichtlich machen. Deswegen nehmen wir mal die Schleife :smile:

Wie so etwas ausschauen könnte, siehst du hier ( Ist aber unter VB.NET)

'Wortliste ist der String
Dim MyWortListe As String = " D A S I S T E I N B E I S P I E L " \_
"0 1 2 3 4 5 6 7 8 9 M I!T SONDERZEICHEN# I M S T R I N G"
'Filter ist das Array mit den Zeichen die du raushaben möchtest
Dim Filter As String() = New String() {",", "!", "#"}
'Wir beginnen mit der Schleife
For Each C As Char In Filter 'Jedes Zeichen einzeln
'Wir ersetzen dies durch ""
 MyWortListe = MyWortListe.Replace(C, "")
Next
Wir bauen ein Array daraus :smile:
Dim MyArray As String() = MyWortListe.Split(" ")

Du musst halt hier nur schauen.Wenn du zum Beispiel eine Zeichenfolge alla „Hallo, wie geht es Dir?Danke mir geht es gut.“
hast dann lutscht er dir zwar das ? weg aber er gibt dir dann DirDanke wieder. Willst du dies nicht, so kann man die Schleife schnell abändern :wink:

MfG Alex

Jo danke dir. Ich mach jetzt einfach replace und ersetze alle sonderzeichen durch leerzeichen. Dann mach ich split() und dann Trim(). Funktioniert echt super.

Danke…
Gruß Conny

1 Like