2

C# コンソール アプリで、分割文字列の 1 桁目を 2 次元配列にするにはどうすればよいですか?

string[,] table3x3 = new string[3, 3];  
string myString = "11A23A4A5A87A5"; 
string[] splitA = myString.Split(new char[] { 'A' });

3x3 の 2 次元配列と、数字と母音を含む文字列があるとします。2Darray 内に配置できるように分割します。出力が次のようになるようにするには、どのようなループを含める必要がありますか

Console.WriteLine(table3x3[0, 0]); //output: blank
Console.WriteLine(table3x3[0, 1]); //output: blank
Console.WriteLine(table3x3[0, 2]); //output: 2
Console.WriteLine(table3x3[1, 0]); //output: blank
Console.WriteLine(table3x3[1, 1]); //output: 4
Console.WriteLine(table3x3[1, 2]); //output: 5
Console.WriteLine(table3x3[2, 0]); //output: 8
Console.WriteLine(table3x3[2, 1]); //output: blank
Console.WriteLine(table3x3[2, 2]); //output: 5

視覚的には、出力は次のようになります。

[ ][ ][2]
[ ][4][5]
[8][ ][5]

文字列の中に 9 つの数字と 5 つの母音があります。シーケンスに従って、分割文字列の最初の桁を特定の 2Darray に返します。

4

1 に答える 1

2

これはそれを行う必要があります:

string[,] table3x3 = new string[3, 3];  
string myString = "11A23A4A5A87A5";

int stringIndex = -1;
bool immediatelyFollowsA = false;
for (int row = 0; row < 3; row++)
    for (int col = 0; col < 3; col++)
    {
        while (myString[++stringIndex] == 'A')
        {
            immediatelyFollowsA = true;
        }

        if (immediatelyFollowsA)
        {
            table3x3[row,col] = myString[stringIndex].ToString();
            immediatelyFollowsA = false;
        }
    }

デモ: http://ideone.com/X0LdF


または、元の出発点に追加します。

string[,] table3x3 = new string[3, 3];  
string myString = "11A23A4A5A87A5";
string[] splitA = myString.Split(new char[] { 'A' });

int index = 0;
bool first = true;
foreach (string part in splitA)
{
    int row = index / 3;
    int col = index % 3;

    if (!first)
    {
        table3x3[row, col] = part[0].ToString();
    }

    index += part.Length;
    first = false;
}

デモ: http://ideone.com/7sKuR

于 2012-06-01T23:51:58.327 に答える