簡體   English   中英

C#List刪除Case-Insensitive

[英]C# List Remove Case-Insensitive

我想從列表中刪除一個單詞。 問題是要刪除的單詞是用戶輸入,它應該不區分大小寫。

我知道如何進行不區分大小寫的比較。 但這似乎不起作用。

List<string> Words = new List<string>();
Words.Add("Word");
Words.Remove("word", StringComparer.OrdinalIgnoreCase);

有沒有辦法做到這一點?

提前致謝

要刪除所有

Words.RemoveAll(n => n.Equals("word", StringComparison.OrdinalIgnoreCase));

刪除第一次出現,如Remove

Words.RemoveAt(Words.FindIndex(n => n.Equals("word", StringComparison.OrdinalIgnoreCase)));

您可以嘗試使用RemoveAll()方法:

List<string> Words = new List<string>();
Words.Add("Word");
Words.RemoveAll(o => o.Equals("word", StringComparison.OrdinalIgnoreCase));

這是一個擴展函數,它將執行相同的操作:

        public static void Remove(this List<string> words, string value, StringComparison compareType, bool removeAll = true)
    {
        if (removeAll)
            words.RemoveAll(x => x.Equals(value, compareType));
        else
            words.RemoveAt(words.FindIndex(x => x.Equals(value, compareType)));
    }

作為額外的好處,這將刪除以指定字符串開頭的值:

        public static void RemoveStartsWith(this List<string> words, string value, StringComparison compareType, bool removeAll = true)
    {
        if (removeAll)
            words.RemoveAll(x => x.StartsWith(value, compareType));
        else
            words.RemoveAt(words.FindIndex(x => x.StartsWith(value, compareType)));
    }

用法示例:

wordList.Remove("text to remove", StringComparison.OrdinalIgnoreCase);
wordList.RemoveStartsWith("text to remove", StringComparison.OrdinalIgnoreCase);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM