gpt4 book ai didi

c# - 更新特定行的字符串,这样它就不会更新字符串中的重复项?

转载 作者:太空宇宙 更新时间:2023-11-03 13:40:45 26 4
gpt4 key购买 nike

我知道如何转到特定行,但我不知道如何更新字符串中的特定行。我已经尝试过替换功能,但它也会覆盖重复项。有什么想法吗?

  static string GetLine(string text, int lineNo)
{
string[] lines = text.Replace("\r", "").Split('\n');
return lines.Length >= lineNo ? lines[lineNo - 1] : null;
}

static void Main(string[] args)
{
string file = "D:\\random.text";
string contents = "";
string text="random";
contents = File.ReadAllText(file);
finale=GetLine(contents,lines);
// Console.ReadLine();
if(finale.Contains(text))
{
finale.Replace(text,"Random");
System.Console.WriteLine(finale);
Console.ReadLine();
}
}

最佳答案

字符串是不可变类型,这意味着您不能更改现有字符串。 string.Replace 返回替换后的字符串,您需要将其重新赋值。

if(finale.Contains(text))
{
finale = finale.Replace(text,"Random"); //<- note here
System.Console.WriteLine(finale);
Console.ReadLine();
}

从那里您需要从 Philippe 指出的字符串数组重建字符串。一个完整的例子(但未经测试):

  static string[] GetLines(string text)
{
return text.Replace("\r", "").Split('\n');
}

static string GetLine(string[] lines, int lineNo)
{
return lines.Length >= lineNo ? lines[lineNo - 1] : null;
}

static void Main(string[] args)
{
string file = "D:\\random.text";
string contents = "";
string text="random";
contents = File.ReadAllText(file);
var lines = GetLines(contents);
finale = GetLine(lines, lineNo);
//Console.ReadLine();
if (finale == null)
return;
if(finale.Contains(text))
{
finale = finale.Replace(text, "Random");
System.Console.WriteLine(finale);
Console.ReadLine();
}
lines[lineNo] = finale;
contents = string.Join('\n', lines);
}

最重要的是,您根本不需要所有拆分功能。 .NET 具有该功能并且它懒惰地(按需)执行,这是一个额外的好处。

参见 File.ReadLines如果您使用的是 .NET 4.0 及更高版本。

关于c# - 更新特定行的字符串,这样它就不会更新字符串中的重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17131163/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com