在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
替换为#
而创建的
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"。