在C#中,我如何从一个特定字符串中获取一个特定的字符,这个字符串是字符串数组的一部分,然后用另一个字符替换它

本文关键字:字符串 字符 一个 一部分 数组 然后 替换 另一个 获取 | 更新日期: 2023-09-27 18:00:17

例如,我有以下代码:

 string Sheet[] = new string[]{
  "ABCDEFG",
  "1234567",
  "abcdefg"  };
while(true){
Console.SetCursorPosition(0, 0);
Console.WriteLine(string.Join(Environment.NewLine, Sheet));  }

但是,我想用"#"替换"C"。

因为循环不断地重新打印文本表,设置光标位置和覆盖"C"并不能解决我的问题。我想如果我用

 string.replace(Oldchar, NewChar)

它可能起作用。我的问题是:如何从数组中选择特定的字符串,然后选择特定的字符?

编辑:我可能问得有点太含糊了。如果该字符串中有更多的"C"字符,但我想在该特定位置重新定位"C",该怎么办?它不一定是第一次出现。

在C#中,我如何从一个特定字符串中获取一个特定的字符,这个字符串是字符串数组的一部分,然后用另一个字符替换它

字符串在C#中是不可变的。这意味着您不能更改字符串,只能通过特定更改从旧字符串创建新字符串。

对于您的情况,这意味着您必须将数组中的所有字符串替换为新字符串,新字符串是通过将旧字符串中的C替换为#而创建的

for(int i=0; i<Sheet.Length; i++) Sheet[i] = Sheet[i].Replace("C", "#");

或者如果你可以更换整个阵列:

Sheet = Sheet.Select(s => s.Replace("C", "#")).ToArray();

更新:如果你想只替换字符串中的一个字符,比如说第一次出现"C",你可以这样做:

for(int i=0; i<Sheet.Length; i++)
{
    string old = Sheet[i];
    int index = old.IndexOf('C');
    if (index < 0) continue; // no C in this string
    Sheet[i] = old.Remove(index, 1).Insert(index, "#");
}

因此,您删除1个字符并插入新字符。

我认为最简单的方法是使用Linq。

通过添加包含LINQusing System.LINQ添加到文件头。

然后你可以用替换你的最后一行

Console.WriteLine( string.Join(Environment.NewLine, Sheet.Select(s => s.Replace('C', '#')).ToArray() ) );

这将在整个数组中用"#"替换字符"C"。