Ich möchte eine Zeichenkette Wort für Wort durchlaufen.
Wenn ich eine Zeichenfolge "incidentno und fintype oder unitno" habe, möchte ich jedes Wort einzeln als "incidentno", "and", "fintype", "or" und "unitno" lesen.
Ich möchte eine Zeichenkette Wort für Wort durchlaufen.
Wenn ich eine Zeichenfolge "incidentno und fintype oder unitno" habe, möchte ich jedes Wort einzeln als "incidentno", "and", "fintype", "or" und "unitno" lesen.
Ich bin mir da nicht sicher, aber ich denke, dass dies bei jeder Iteration zu einer Spaltung führen wird. Sie würden eher haben die Zeichenfolge aufgeteilt und in ein lokales Array, und verwenden Sie dann die "in" Operator auf, dass.
Das einzige Problem ist die Zeichensetzung, foreach (string word in "now, the end is near".Split(' '))
Sie brauchen das ".Where" nicht, wenn Sie die Überladung von Split verwenden, wo Sie StringSplitOptions.RemoveEmptyEntries hinzufügen können.
Ich weiß, es ist etwas verdreht, aber man könnte einen Iterator-Block als Erweiterungsmethode für Strings definieren, z. B.
/// <summary>
/// Sweep over text
/// </summary>
/// <param name="Text"></param>
/// <returns></returns>
public static IEnumerable<string> WordList(this string Text)
{
int cIndex = 0;
int nIndex;
while ((nIndex = Text.IndexOf(' ', cIndex + 1)) != -1)
{
int sIndex = (cIndex == 0 ? 0 : cIndex + 1);
yield return Text.Substring(sIndex, nIndex - sIndex);
cIndex = nIndex;
}
yield return Text.Substring(cIndex + 1);
}
foreach (string word in "incidentno and fintype or unitno".WordList())
System.Console.WriteLine("'" + word + "'");
Dies hat den Vorteil, dass bei langen Zeichenketten kein großes Array erstellt wird.
Unter der Annahme, dass die Wörter immer durch ein Leerzeichen getrennt sind, könnten Sie Folgendes verwenden String.Split() um ein Array Ihrer Worte zu erhalten.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.