2015-01-01 4 views
0

этой строки Дана:Преобразования строки в многомерный массив символов C#

S##### 
.....# 
#.#### 
#.#### 
...#.G 
##...# 

, и я хочу, чтобы преобразовать его в 6х6 символьных array.I знать, что я могу заполнить поля, как это:

charName[0,0] ='S'; 
    charName[0,1] ='#'; 
    charName[0,2] ='#'; 
    charName[0,3] ='#'; 
    charName[0,4] ='#'; 
    charName[0,5] ='#'; 

Однако это стоило много времени, и я думаю, что есть лучший способ сделать это. Спасибо за любую помощь :)

+0

Это многострочная строка? –

ответ

0

Я воспринимаю это как ваша строка многострочного один. Поэтому он должен иметь '\ n' в конце каждой строки, кроме последней. Поэтому сначала нужно разбить строку на массив строк. Затем из каждой строки берем каждый символ и помещаем его в массив символов.

Здесь,

string input = "S#####\n.....#\n#.####\n#.####\n...#.G\n##...#"; 

char[,] charArray = new char[6, 6]; 

var lines = input.Split(new [] { '\n' }); 
int row = 0; 
foreach (string line in lines) 
{ 
    int column = 0; 
    foreach (char character in line) 
    { 
     charArray[row, column] = character; 
     column++; 
    } 
    row++; 
} 
Console.ReadKey(); 

Наконец charArray (многомерный массив) будет держать ваши строки символов.

+0

Спасибо, сэр! =) Я уже думал о разделении строки. – Masterqqqq

2

Просто разделить новой строкой:

var s="...";  // your initial string 
var arr=s.Split(new[] { Environment.NewLine }); 

// you can then get your characters like: 
var ch=arr[0][2]; // would be # in your example 
+1

Обратите внимание, что 'char [] []' отличается от 'char [,]' –

0

Это не очень понятно, что вы просите, но я предполагаю, что вы просите за то, как инициализируются массив. Так вот:

char[,] charName = new char[6,6] { 
     {'S', '#', '#', '#', '#', '#' }, 
     {'.', '.', '.', '.', '.', '#' }, 
     {'#', '.', '#', '#', '#', '#' }, 
     {'#', '.', '#', '#', '#', '#' }, 
     {'.', '.', '.', '#', '.', 'G' }, 
     {'#', '#', '.', '.', '.', '#' }, 
    }; 

Хотя это не сработает, если ваши данные являются произвольными.

0

Вы можете попробовать это ..

 static void Main(string[] args) 
     { 
      char[,] charArray = new char[6, 6]; 
      Add(0, ref charArray, 'S','#','#','#','#','#'); 
      Add(1, ref charArray, '.', '.', '.', '.', '.', '#'); 
      Add(2, ref charArray, '#', '.', '#', '#', '#', '#'); 
      Add(3, ref charArray, '#', '.', '#', '#', '#', '#'); 
      Add(4, ref charArray, '.', '.', '.', '#', '.', 'G'); 
      Add(5, ref charArray, '#', '#', '.', '.', '.', '#'); 
     } 

     public static void Add(int index, ref char[,] array, params char[] parameters) 
     { 
      for (int i = 0; i < parameters.Length; i++) 
      { 
       array[index, i] = parameters[i]; 
      } 
     } 
0
//Single-string matrix: 
      String input = @"S##### 
          .....# 
          #.#### 
          #.#### 
          ...#.G 
          ##...#"; 

      var arr = input.Split(new[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries); 


      //Result "S" will be arr[0][0].ToString() 
      ////Result "#" will be arr[0][0].ToString() 
Смежные вопросы