gpt4 book ai didi

C# 在一个字符串中一次做很多替换

转载 作者:行者123 更新时间:2023-12-04 02:27:16 25 4
gpt4 key购买 nike

我有一个替换字典

var substitutions = new Dictionary<string, string>()
{
{ "one", "two" },
{ "two", "three" },
};

我想把字符串“一二三四”变成“二三三四”。

运行任何类型的迭代替换链,例如

var phrase = "one two three four";
substitutions.Aggregate(phrase, (current, substitution) => current.Replace(substitution.Key, substitution.Value)));

var sb = new StringBuilder(phrase);
foreach (var entry in substitutions)
{
sb.Replace(entry.Key, entry.Value);
}
sb.ToString();

产生“三三三四”,因为第二个替换“二”→“三”能够从前一个输出中看到“一”→“二”输出。

如何只替换“原始”字词?

最佳答案

您可以按如下方式使用正则表达式:

var substitutions = new Dictionary<string, string>()
{
{ "one", "two" },
{ "two", "three" },
};

var phrase = "one two three four";

var pattern = string.Join("|", substitutions.Keys.Select(Regex.Escape));

// Pattern is: one|two

var result = Regex.Replace(phrase, pattern, match => substitutions[match.Value]);

Working example


如果替换必须只匹配完整的单词,您可以更新 pattern 以包含单词边界 \b:

substitutions.Keys.Select(x => @$"\b{Regex.Escape(x)}\b")

Working example

关于C# 在一个字符串中一次做很多替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66601433/

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