Question: I have an XML tag that I need to manipulate on Linux:

```
<m1:PayloadId>TESTCASE01_0000123456</m1:PayloadId>

```

I need to change the text from `TESTCASE01_0000123456` to `TESTCASE01_1234567890` between the tags.

I used this sed command in my code:

```
sed -i 's/PayloadId>.*</m1:PayloadId>'0000123456'</g' t1.xml

```

but it replaces the entire text. I need to retain `TESTCASE01_`.

Answer: 
It is always possible to iterate over any 2-dimensional arrays using nested for loops. Think of this as a table with rows and columns, where the first for loop selects the row and the second for loop selects the column. 

When you've selected the column, simply perform the function you wish, in this case `Console.WriteLine(column[j])`, where `column[j]` is the column you want to print to the console or wherever you might want to output the result.

```
string[,] conversionTable = {
        { "Miles to kilometers", "Miles", "Kilometers", "1.6093" },
        { "Kilometers to miles", "Kilometers", "Miles", "0.6214" },
        { "Feet to meters", "Feet", "Meters", "0.3048" },
        { "Meters to feet", "Meters", "Feet", "3.2808" },
        { "Inches to centimeters", "Inches", "Centimeters", "2.54" },
        { "Centimeters to inches", "Centimeters", "Inches", "0.3937" }
    };

for(int i = 0; i < conversionTable.Length; i++){
    for(int j = 0; j < conversionTable.Length; j++){
        Console.WriteLine(conversionTable[i][j]);
    }
}

```

You'd probably want to use a class with properties and rather use a `List<ConversionTable>` but that's not the assignment I'm guessing.
You are probably looking to do something like this:

```
    private static void TestArray()
    {
        string[,] conversionTable = {
            { "Miles to kilometers", "Miles", "Kilometers", "1.6093" },
            { "Kilometers to miles", "Kilometers", "Miles", "0.6214" },
            { "Feet to meters", "Feet", "Meters", "0.3048" },
            { "Meters to feet", "Meters", "Feet", "3.2808" },
            { "Inches to centimeters", "Inches", "Centimeters", "2.54" },
            { "Centimeters to inches", "Centimeters", "Inches", "0.3937" }
        };

        //This loop for filling ComboBox
        for(int i = 0; i < conversionTable.GetLength(0); i++)
        {
            var v = conversionTable[i,0];
            Console.WriteLine(v); //Fill ComboBox
        }

        var selectedIndex = 2; //"Feet to meters"

        Console.WriteLine();
        Console.WriteLine();

        //This loop for displaying values for the selected 
        //... conversion method from the ComboBox
        for(int i = 1; i < conversionTable.GetLength(1); i++)
        {
            Console.WriteLine(conversionTable[selectedIndex,i]);
        }
    }

```

I have combined both steps in one method for brevity. The first `for` loop would be used to fill the `ComboBox` using `Add` instead of `Console.WriteLine`. The variable `selectedIndex` represents the index of the item selected in the `ComboBox`. Use that value to grab the `Array` of strings you want to display elsewhere. Notice that the second `for` loop starts at index 1 instead of 0, since I assume you don't need to display the same value you just selected from the `ComboBox`.