Подстрока C # и ToUpper - PullRequest
3 голосов
/ 14 января 2009

Я использую подстроку и IndexOf, чтобы найти значение в строке, но мой код не работает, если строка (strOldValue) ниже содержит какую-либо строку в другом случае. Так что, если strOldValue содержал Test или TEST, моя подстрока завершится ошибкой. Как бы я добавил ToUpper в этом сценарии? Прости мое невежество, я новичок в .Net.

String strValue = strOldValue.Substring(strOldValue.IndexOf(@"test"));

Спасибо C

Ответы [ 5 ]

16 голосов
/ 14 января 2009

Используя ToUpper, это будет сделано так:

String strValue = strOldValue.Substring(
                    strOldValue.ToUpper().IndexOf(@"TEST"));

Однако проще всего указать, что сравнение не должно выполняться с учетом регистра:

String strValue = strOldValue.Substring(strOldValue.IndexOf(@"TEST",
          StringComparison.CurrentCultureIgnoreCase));

Второй параметр сравнениеType метода IndexOf указывает, как искать параметр значения: используя текущую или инвариантную культуру, используя поиск с учетом регистра или без учета регистра, или используя правила сравнения слов или порядковых номеров (см. http://msdn.microsoft.com/en-us/library/ms224425.aspx для полной документации).

3 голосов
/ 14 января 2009
String strValue 
    = strOldValue.Substring(strOldValue.ToUpper().IndexOf(@"TEST"));

Примечание. Я отвечаю на вопрос напрямую, как и было задано («Как добавить ToUpper в этом сценарии?»)

Это НЕ то, как я бы кодировал нечувствительную к регистру подстроку.

Ответ от divo / TheSoftwareJedi явно выше.

2 голосов
/ 12 апреля 2009

Использование String.IndexOf(String,StringComparison), вероятно, лучший ответ. Использование ToUpper() где-то просто создает дополнительный объект String, который должен быть уничтожен сборщиком мусора. Почти все методы сравнения String имеют перегрузку, которая принимает флаг, указывающий, как выполнять сравнения.

1 голос
/ 14 января 2009
strValue.Substring(strValue.IndexOf("TEST", StringComparison.OrdinalIgnoreCase));
0 голосов
/ 14 января 2009

В качестве поклонника регулярных выражений я бы использовал следующий код:

String strValue = new Regex("test.*",
       RegexOptions.IgnoreCase).Match(strOldValue).Value;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...