条件が真であれば、2つの文字列の間に文字列を挿入する方法はありますか?文字列配列内の単語が終了し、charで始まりその間に新しい文字列を挿入する(C#)
最初の単語がその1つで終わり、2番目の単語がそのうちの1つで始まっているかどうかを調べたい文字の配列があるとします。例えば、「O」と「H」の要件を満たしています文字があるので、条件に合格する「ホーム行く」については
(=>行く___ホーム)
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 + " "));
私の問題は、これが「戻っているということです私はなぜ家に行くのか "の代わりに"家の間に行く "と私は理由を見つけることができません。
ありがとうございました。
あなたは 'のx ==言葉[I] .Last()' 'の代わりのx ==の言葉[i]の[言葉[i]が.LENGTH - 1]行うことができます' IMOは、より読みやすいです。そして、戻ってくる文字列を結合するために 'return string.Join(" "、words);'を使います。 – juharr
'if'条件に' i> 0 && 'を加えてください。これはあなたを解決するはずです。 'if'の最初の条件を確認してください。あるいは、より良いのは、 'for'ループを' for(int i = 1; i
Icemanind
問題は、 'words'の長さが値を追加してからも増え続けるということです。その理由のためにループしているコレクションを突然変異させないことが最善です。 – juharr