Wie kann ich eine Zeichenfolge zwischen zwei Zeichenfolgen einfügen, wenn eine Bedingung zutrifft?Überprüfen Sie, ob die Wörter im Zeichenfolgenarray enden und mit char beginnen und eine neue Zeichenfolge dazwischen einfügen (C#)
Nehmen wir an, wir haben eine Reihe von Zeichen, die wir überprüfen möchten, ob das erste Wort mit einem von ihnen endet und das zweite Wort mit einem von ihnen beginnt.
Zum Beispiel "Go home" wird die Bedingung übergeben, da "o" und "h" sind Buchstaben, die Anforderung erfüllen wird (=> Go ___ zu Hause)
char[] toCheck = {'h','o','d', 'g'};
string sentence = "Go home";
List<string> words = sentence.Split(' ').ToList();
for (int i = 0; i < words.Count - 1; i++)
{
if (toCheck.Any(x=> x == words[i][words[i].Length - 1]) &&
(toCheck.Any(x=> x == words[i + 1][0])))
{
words.Insert(i,"_between");
}
}
return words.Aggregate("", (current, word) => current + (word + " "));
Mein Problem ist, dass diese zurückkehrt " _zwischen Go _between home "statt" Go _between home "und ich kann nicht herausfinden warum.
Vielen Dank für Ihre Hilfe.
Sie könnten tun 'x == Worte [i] .Last()' statt 'x == Worte [i] [Worte [i] .Length - 1]' die IMO besser lesbar ist. Und benutze 'return string.Join (" ", words);' um die Wörter wieder zusammenzufügen. – juharr
Fügen Sie in Ihrer 'if' Bedingung' i> 0 && 'hinzu. Dies sollte dich reparieren. Stellen Sie sicher, dass es die erste Bedingung in Ihrem 'if' ist. Oder, noch besser, ändern Sie Ihre 'for' -Schleife zu' for (int i = 1; i
Icemanind
Das Problem ist, dass die Länge von "Wörtern" weiter wächst, da Sie Werte hinzufügen. Es ist am besten, eine Sammlung nicht zu mutieren, die Sie aus diesem Grund durchlaufen. – juharr