Без учета регистра 'Содержит (строка)'

Возможно, вы пытаетесь поймать Corrupted State Exception . Так как приложения .NET 4 не могут поймать такие исключения по умолчанию. Вы можете попытаться добавить запись legacyCorruptedState­­ExceptionsPolicy=true в свой файл конфигурации, как указано в статье MSDN, указанной выше.

2740
задан Lonely Neuron 6 June 2018 в 14:52
поделиться

4 ответа

Вы могли всегда просто или downcase строки сначала.

string title = "string":
title.ToUpper().Contains("STRING")  // returns true

ой, просто видел, что в последний раз укусил. Нечувствительное к регистру выдерживает сравнение, был бы *, вероятно *, делают то же так или иначе, и если производительность не является проблемой, я не вижу проблемы с созданием прописных копий и сравнением их. Я, возможно, поклялся, что однажды видел, что нечувствительное к регистру выдержало сравнение однажды...

76
ответ дан Ed S. 7 June 2018 в 00:52
поделиться

Можно использовать IndexOf() как это:

string title = "STRING";

if (title.IndexOf("string", 0, StringComparison.CurrentCultureIgnoreCase) != -1)
{
    // The string exists in the original
}

С тех пор 0 (нуль) может быть индекс, Вы проверяете по-1.

MSDN

основанное на нуле индексное положение значения, если та строка найдена, или-1, если это не. Если значение является Строкой. Пустой, возвращаемое значение 0.

219
ответ дан Liam 7 June 2018 в 00:52
поделиться
  • 1
    В обоих случаях я рекомендую избежать глобального импорта. IMO намного лучший путь import Tkinter as tk или import tkinter as tk. – Bryan Oakley 25 July 2013 в 08:50

Вы могли использовать эти Строка. Метод IndexOf и передача StringComparison.OrdinalIgnoreCase как тип поиска для использования:

string title = "STRING";
bool contains = title.IndexOf("string", StringComparison.OrdinalIgnoreCase) >= 0;

Еще лучше определяет новый дополнительный метод для строки:

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

Примечание, тот пустое распространение ?. доступно начиная с C# 6.0 (VS 2015) для более старого использования версий

if (source == null) return false;
return source.IndexOf(toCheck, comp) >= 0;

ИСПОЛЬЗОВАНИЕ:

string title = "STRING";
bool contains = title.Contains("string", StringComparison.OrdinalIgnoreCase);
2585
ответ дан Vadim Ovchinnikov 7 June 2018 в 00:52
поделиться

Альтернативное решение с использованием Regex:

bool contains = Regex.IsMatch("StRiNG to search", Regex.Escape("string"), RegexOptions.IgnoreCase);
138
ответ дан 22 November 2019 в 19:51
поделиться
Другие вопросы по тегам:

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