Как использовать HashSet <строка>.Contains () метод в случае, если - нечувствительный режим?

Как использовать HashSet<string>.Contains() метод в случае, если - нечувствительный режим?

67
задан Ajay 19 November 2015 в 09:59
поделиться

4 ответа

Вы можете создать HashSet с помощью специального компаратора:

HashSet<string> hs = new HashSet<string>(StringComparer.OrdinalIgnoreCase);

hs.Add("Hello");

Console.WriteLine(hs.Contains("HeLLo"));
113
ответ дан 24 November 2019 в 14:36
поделиться

Здесь нет необходимости, как показали другие ответы, но в других случаях, когда вы не используете строку, вы можете реализовать IEqualityComparer , а затем вы можете использовать перегрузку .Contains . Вот пример использования строки (опять же, другие ответы показали, что уже есть средство сравнения строк, которое вы можете использовать, которое соответствует вашим потребностям). Многие методы, окружающие IEnumerable , имеют перегрузки, которые принимают такие компараторы, поэтому полезно узнать, как их реализовать.

class CustomStringComparer : IEqualityComparer<string>
{
    public bool Equals(string x, string y)
    {
        return x.Equals(y, StringComparison.InvariantCultureIgnoreCase);
    }

    public int GetHashCode(string obj)
    {
        return obj.GetHashCode();
    }
}

А затем используйте его

bool contains = hash.Contains("foo", new CustomStringComparer());
6
ответ дан 24 November 2019 в 14:36
поделиться

Вы должны использовать конструктор , который позволяет указать IEqualityComparer , который вы хотите использовать.

HashSet<String> hashSet = new HashSet<String>(StringComparer.InvariantCultureIgnoreCase);

Объект StringComparer предоставляет некоторые часто используемые компараторы в качестве статических свойств.

5
ответ дан 24 November 2019 в 14:36
поделиться

Вам необходимо создать его с помощью правильного IEqualityComparer :

HashSet<string> hashset = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
10
ответ дан 24 November 2019 в 14:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: