2014-10-06 3 views
1

Привет им возникли проблемы при помещении IgnoreCase этих кодовВозникли проблемы с IgnoreCase

Console.WriteLine("Select a seat that you want to ocupy"); 
      string UserInput = Console.ReadLine(); 
      //replacing array values with X 
      for (int row = Arr.GetLowerBound(0); row <= Arr.GetUpperBound(0); ++row) 
      { 
       for (int column = Arr.GetLowerBound(1); column <= Arr.GetUpperBound(1); ++column)      
        if (Arr[row, column].Contains(UserInput))      
         { 
          Arr[row, column] = " X "; 
         }                 
      } 

Я заменяю 2d значения массива с «X» с помощью UserInput Вот моего массив

string[,] Arr = new string[,] 
{{"A1" , " A2" , " A3" , " A4" , " A5"}, 
{"B1" , " B2" , " B3" , " B4" , " B5"}}; 
+0

пожалуйста, объясните немного больше, где вы разместили этот код и что исключение вы получили – Tushar

+0

я пытаюсь поставить IgnoreCase в этой строке, если (Arr [строка, столбец]. Содержит (UserInput)) – Josh

+0

Пожалуйста, обновите свой код с ошибкой – Tushar

ответ

2

String.Contains не имеет возможности указывать сравнение культуры или случая. Из-за этого вы, вероятно, захотите использовать ToLowerInvariant.

Например:

string UserInput = Console.ReadLine().ToLowerInvariant(); 

... 

if (Arr[row, column].ToLowerInvariant().Contains(UserInput)) 
1

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

Arr[row, column].Contains(UserInput.ToUpper()) 

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