2013-11-12 2 views
-1

Мне нужно отформатировать строку так, чтобы она игнорировала регистр. если слово «это», тогда оно должно также учитывать «Это» и «ИТ». Как я могу достичь этого. У меня есть функция поиска, которая ищет слово в документе слова. Следующий формат предназначен для поиска слова «это», а не между любым словом «w» it. Я также хочу включить формат файла игнорирования. Как я могу это сделатьСтроковый формат, чтобы игнорировать регистр в окнах C#

string Pattern = String.Format("<{0}>", text); 
+1

Я не уверен, что вы имеете в виду при форматировании строки так, чтобы она игнорирует регистр –

+0

Что вы имеете в виду под «IgnoreCase формат»? –

+4

Забудьте все, что вы написали, вы хотите, чтобы поиск по регистро-зависимому регулярному выражению с границами слов. – Rotem

ответ

0

Использование .ToLower() или .ToUpper() на образце и источник при поиске, который гарантирует, что независимо от первоначального корпуса, случаи идентичны во время поиска.

+0

Это звучит очень неэффективно для поиска в большом тексте, таком как текстовый документ. Вам нужно будет преобразовать весь текст для каждого поиска. – Rotem

+0

@Rotem, вы можете просто сохранить преобразованный текст и выполнить поиск сразу, поэтому вам нужно только один раз конвертировать. Это не оптимально для массивного текста, но, безусловно, самый простой способ сделать это, если производительность не является критичной. Следует отметить, что regexp не всегда быстрее, чем преобразование ToUpper. Вот пример ссылки: http://stackoverflow.com/questions/17579368/regex-ismatch-vs-string-toupper-contains-performance – Tobberoth

+0

ОП никогда не указывал, сколько данных есть, поэтому я не понимаю, почему этот ответ сокращается. – Dave

0

Вы можете использовать:

String.Compare(first_string, second_string, StringComparison.OrdinalIgnoreCase) ; 

Он вернется -1,0,1 ... поэтому, если вы хотите, то же самое, игнорируя случай, сравните это с 0.

+0

'String.Compare' для сравнения не поиск. –

+0

true. вопрос немного неясен, но ваши ответы касаются правильного тогда ... – Noctis

2

Это звучит как вам нужно «CaseInsensitive Find». IndexOf способ может сделать это в качестве альтернативы Regex.

int index = source.IndexOf(searchKeyword, StringComparison.OrdinalIgnoreCase); 
if(index >= 0) 
{ 
    Console.WriteLine("Found at index " + index); 
} 
Смежные вопросы