gpt4 book ai didi

c# - 通过递增每次出现来替换文本

转载 作者:太空狗 更新时间:2023-10-29 22:30:03 26 4
gpt4 key购买 nike

我有一条短信说:

Hello
abc
Hello
def
Hello

我想把它转换成

Hello1
abc
Hello2
abc
Hello3

即我需要在每次出现“Hello”文本后附加一个数字。

目前我写了这段代码:

var xx = File.ReadAllText("D:\\test.txt");


var regex = new Regex("Hello", RegexOptions.IgnoreCase);
var matches = regex.Matches(xx);


int i = 1;
foreach (var match in matches.Cast<Match>())
{
string yy = match.Value;
xx = Replace(xx, match.Index, match.Length, match.Value + (i++));
}

上面使用的替换方法是:

public static string Replace(string s, int index, int length, string replacement)
{
var builder = new StringBuilder();
builder.Append(s.Substring(0, index));
builder.Append(replacement);
builder.Append(s.Substring(index + length));
return builder.ToString();
}

目前上面的代码不工作,正在替换中间的文本。

你能帮我解决这个问题吗?

最佳答案

假设 Hello 只是一个更复杂模式的占位符,这里有一个简单的修复方法:在可以使用变量的 Regex.Replace 中使用匹配求值器:

var s = "Hello\nabc\nHello\ndef\nHello";
var i = 0;
var result = Regex.Replace(
s, "Hello", m => string.Format("{0}{1}",m.Value,++i), RegexOptions.IgnoreCase);
Console.WriteLine(result);

参见 C# demo

关于c# - 通过递增每次出现来替换文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40783467/

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