将字符串转换为多维字符数组c#
Converting string into multidimensional char array c#
给出的字符串:
S#####
.....#
#.####
#.####
...#.G
##...#
我想将其转换为 6x6 字符 array.I 知道我可以这样填写字段:
charName[0,0] ='S';
charName[0,1] ='#';
charName[0,2] ='#';
charName[0,3] ='#';
charName[0,4] ='#';
charName[0,5] ='#';
但是这会花费很多时间,我认为有更好的方法来做到这一点。感谢您提供任何帮助:)
简单地用换行符分割:
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
不太清楚你在问什么,但我猜你是在问初始化数组的方法。所以是这样的:
char[,] charName = new char[6,6] {
{'S', '#', '#', '#', '#', '#' },
{'.', '.', '.', '.', '.', '#' },
{'#', '.', '#', '#', '#', '#' },
{'#', '.', '#', '#', '#', '#' },
{'.', '.', '.', '#', '.', 'G' },
{'#', '#', '.', '.', '.', '#' },
};
尽管如果您的数据是任意的,这将不起作用。
你能试试这个吗..
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];
}
}
我认为你的字符串是多行字符串。所以除了最后一行之外,每行的末尾必须有 '\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(多维数组)将保存您的字符串字符。
//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()
给出的字符串:
S#####
.....#
#.####
#.####
...#.G
##...#
我想将其转换为 6x6 字符 array.I 知道我可以这样填写字段:
charName[0,0] ='S';
charName[0,1] ='#';
charName[0,2] ='#';
charName[0,3] ='#';
charName[0,4] ='#';
charName[0,5] ='#';
但是这会花费很多时间,我认为有更好的方法来做到这一点。感谢您提供任何帮助:)
简单地用换行符分割:
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
不太清楚你在问什么,但我猜你是在问初始化数组的方法。所以是这样的:
char[,] charName = new char[6,6] {
{'S', '#', '#', '#', '#', '#' },
{'.', '.', '.', '.', '.', '#' },
{'#', '.', '#', '#', '#', '#' },
{'#', '.', '#', '#', '#', '#' },
{'.', '.', '.', '#', '.', 'G' },
{'#', '#', '.', '.', '.', '#' },
};
尽管如果您的数据是任意的,这将不起作用。
你能试试这个吗..
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];
}
}
我认为你的字符串是多行字符串。所以除了最后一行之外,每行的末尾必须有 '\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(多维数组)将保存您的字符串字符。
//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()