我有一個這樣的清單:
List<string> _unWantedWords = new List<string> { "word1", "word2", "word3" };
我有一個像這樣的字串:
string input = "word1mdjw ksjcword2 d word3fjwu";
我想洗掉輸入字串中不需要的單詞,但字串在 C# 中是不可變的,所以我雖然我會用 lambda 運算式一次性做一些花哨的事情。像這樣:
string output = _unWantedWords.Select(x => input.Replace(x, ""));
但我似乎無法讓它作業,有什么想法嗎?:)
丹尼爾
uj5u.com熱心網友回復:
在一般情況下,任務存在一些微妙的問題:
我們應該遞回地做嗎?
"woword1rd1ABC" -> "word1ABC" -> ABC
| | | |
remove remove again
什么是為了消除嗎?如果我們想洗掉{"ab", "bac"}什么是想要的結果"XabacY"呢?
"XabacY" -> "XacY" // ab removed
-> "XaY" // bac removed
在最簡單的情況下(按順序洗掉單詞_unWantedWords,沒有遞回),您可以放置??(因為您已經嘗試過,讓我們使用LinqSelect):
input = _unWantedWords.Aggregate(input, (s, w) => s.Replace(w, ""));
我們不能改變string自己,但我們可以改變參考(即分配給input)
uj5u.com熱心網友回復:
您可以使用ForEach替代
_unWantedWords.ForEach(x => { input= input.Replace(x, "")});
uj5u.com熱心網友回復:
您可以使用 ForEach 函式來替換輸入中的文本。
string output = input;
_unWantedWords.ForEach(x => output = output.Replace(x, ""));
您可以創建另一個變數,以免丟失原始輸入。
uj5u.com熱心網友回復:
這是你需要的嗎?
List < string > _unWantedWords = new List < string > {
"word1",
"word2",
"word3"
};
string input = "word1mdjw ksjcword2 d word3fjwu";
for (int i = 0; i < _unWantedWords.Count; i ) {
input = input.Replace(_unWantedWords[i], "");
}
點網小提琴:https : //dotnetfiddle.net/zoY4t7
或者你可以簡單地使用ForEach,在這里閱讀更多
_unWantedWords.ForEach(x => {
input = input.Replace(x, "");
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/326788.html
