替换二维数组中的字符串值

3

我正在尝试替换2D数组中的字符串值,并尝试了下面的代码,但没有任何反应。

foreach (string item in Arr)
{
    if (UserInput.Equals(item))
    {
        item.Replace(UserInput, "X ");
    }
}

对于这些代码也是一样的,什么都没有发生...

Console.WriteLine("Select a seat that you want to ocupy");
string ln = Console.ReadLine();

if (ln.Equals(Arr))
{
    ln = ln.Replace(ln, "X ");
}

1
请问您能展示定义“Arr”的代码吗?它是“string[][]”还是“string[,]”? - juharr
ln.Equals(Arr) 会将一个字符串与一个数组进行比较,且始终返回 false。 - vc 74
以下是代码:string[,] Arr = new string[4,5] { {"A1" , " A2" , " A3" , " A4" , " A5"}, {"B1" , " B2" , " B3" , " B4" , " B5"}, {"C1" , " C2" , " C3" , " C4" , " C5"}, {"D1" , " D2" , " D3" , " D4" , " D5"}, }; - Josh
4个回答

3

你当前的代码

  item.Replace(UserInput, "X ");

创建了一个String对象,但却被忽略;这可能是类似于以下的内容:

  item = item.Replace(UserInput, "X ");

然而,在foreach循环中,这是不可能的,因此让我们尝试使用for循环:

  String[,] Arr = new String[,] {
    {"A1", "A2", "A3", "A4"},
    {"B1", "B2", "B3", "B4"}
  };

  String UserInput = "B3";

  for(int line = Arr.GetLowerBound(0); line <= Arr.GetUpperBound(0); ++line)
    for(int column = Arr.GetLowerBound(1); column <= Arr.GetUpperBound(1); ++column)
      if (Arr[line, column].Contains(UserInput)) 
        Arr[line, column] = "X";

0
这应该能够解决问题:
   string ln = Console.ReadLine();
   for (int i = 0; i < Arr.length; i++) {
        Arr[i] = Arr[i].Replace(ln, "X ");
   }

0
if (ln.Equals(Arr))
{
    ln = ln.Replace(ln, "X ");
}

Arr 是什么?它是数组对象吗?

如果是的话,你不能只用整个数组进行比较。

你需要使用 for 循环或其他方法逐个检查。

for (int i=0, len = Arr.Length; i < len; i++ )
{
    if (ln.Equals(Arr[i]))
    {
        Console.WriteLine("old ln = " + ln);
        ln = ln.Replace(ln, "X ");
        Console.WriteLine("new ln = " + ln);
    }
}

0

试试这个:

        string[,] Arr = new string[4, 5];
        string textToReplace = "test";
        for(int k=0;k < Arr.GetLength(0);k++)
         for(int l=0;l < Arr.GetLength(1);l++)
             if (Arr[k,l]==textToReplace){
                 Arr[k, l] = "X";
             }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接