簡體   English   中英

不區分大小寫的列表

[英]A case-insensitive list

我需要一個不區分大小寫的列表或集合類型的集合(字符串)。 創建一個最簡單的方法是什么? 您可以指定要在Dictionary的鍵上獲得的比較類型,但我找不到任何類似的List。

假設您使用的是.NET 3.5,您可以使用:

var strings = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);

...或類似的東西,你也可以選擇適當的文化背景。

只有在調用IndexOf和相關方法時,列表才真正具有大部分比較的想法。 我不相信有任何方法可以指定用於此的比較。 但是,您可以使用List<T>.Find with predicate。

使用Linq,這為.Compare添加了一個新方法

using System.Linq;
using System.Collections.Generic;

List<string> MyList = new List<string>();

MyList.Add(...)

if (MyList.Contains(TestString, StringComparer.CurrentCultureIgnoreCase)) {
    //found
}

看起來可以利用KeyedCollection類:

public class Set<T> : KeyedCollection<T,T>
{
    public Set()
    {}

    public Set(IEqualityComparer<T> comparer) : base(comparer)
    {}

    public Set(IEnumerable<T> collection)
    {
        foreach (T elem in collection)
        {
            Add(elem);
        }
    }

    protected override T GetKeyForItem(T item)
    {
        return item;
    }
}

類似的故事在這里尋找檢查包含

例如

public static bool Contains(this string source, string toCheck, StringComparison comp)
        {
            return source.IndexOf(toCheck, comp) >= 0;
        }

暫無
暫無

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

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