Как заменить пустые строки в 2D-массиве символом?

#c# #arrays #string #replace

#c# #массивы #строка #заменить

Вопрос:

Итак, у меня есть этот 2D-массив

 string[,] board = {
{ "Patrol", "", "", "", "", "" },

{ "", "", "", "Ship", "", "" },

{ "", "", "", "", "", "Carrier" },

{ "", "Destroyer", "", "", "", "Carrier" },

{ "", "Destroyer", "", "", "", "Carrier" },

{ "", "", "", "", "", "" } };
  

И мне было интересно, что мне нужно будет сделать, чтобы заменить все пробелы на «X».

 for (int i = 0; i < 6; i  )
{
    Console.WriteLine("");

    for (int j = 0; j < 6; j  )
    {
        Console.Write(string.Format("{0} ", board[i, j]));
    }
}
  

Я использую это для вывода массива.

Комментарии:

1. string.Replace

2. Но это массив?

3. Замените пробел или просто отобразите его как X ?

Ответ №1:

На самом деле это простая манипуляция с массивом

 for (int i = 0; i < 6; i  )
{
    for (int j = 0; j < 6; j  )
    {
        if (board[i,j] == "")
            board[i,j] = "X";           
    }
}
  

Комментарии:

1. Ты спаситель, мне потребовалось так много времени, чтобы найти ответ на этот вопрос. Я удивлен, насколько это просто. Спасибо!

2. Если вы заменяете один символ одним символом, вы можете использовать ‘ ‘ и ‘X’, чтобы избежать ненужных строк.

Ответ №2:

Для замены пробелов на X:

 for ( int indexD1 = board.GetLowerBound(0); indexD1 <= board.GetUpperBound(0); indexD1   )
  for ( int indexD2 = board.GetLowerBound(1); indexD2 <= board.GetUpperBound(1); indexD2   )
    board[indexD1, indexD2] = board[indexD1, indexD2].Replace(" ", "X");
  

Но заменить пустые строки на «X»:

 for ( int indexD1 = board.GetLowerBound(0); indexD1 <= board.GetUpperBound(0); indexD1   )
  for ( int indexD2 = board.GetLowerBound(1); indexD2 <= board.GetUpperBound(1); indexD2   )
    if ( board[indexD1, indexD2] == "" )
      board[indexD1, indexD2] = "X";
  

Вы также можете написать это, чтобы быть скрупулезным:

 if ( string.IsNullOrEmpty(board[indexD1, indexD2]) )
  

Комментарии:

1. Я предполагаю, что в вашем первом фрагменте должно было быть сказано .....Replace(" ", "X"); , отредактировано для вас. Слава проверке границ массива. 🙂

2. GetLowerBound как правило, это немного бесполезно, если только у вас нет специального массива, который встречается редко, но представляет интерес GetUpperBound для измерения. Создание массивов с ненулевыми нижними границами в C #

3. Согласен, примерно единственный раз, когда я использовал ненулевые границы, был в коллекциях OLE COM