我有一个Dictionary<string , string> dict
和一个string script
。
我想用字典中相应的key
替换script
中value
的每个dict
,以这样的方式来替换只有与键相同的标记。
示例
字典"name" : "John"
"age" : "34"
具有以下条目:
string script = " The name and the fathersname and age and age_of_father "
和
script = " The John and the fathersname and 34 and the age_of_father "
替换后的输出应为:
string.Replace()
我尝试使用Regex.Replace()
,但不起作用。如何使用import idb from 'idb';
await idb.open(…);
和Lookahead的概念来完成此任务?
答案 0 :(得分:1)
让我们匹配每个单词 (\w+
最简单的模式:单词是一个或多个unicode单词字符的序列),并检查(在词典的帮助下)是否应该替换为:
Dictionary<string, string> dict =
new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase) {
{ "name", "John"},
{ "age", "34"}
};
string script = " The name and the fathersname and age and age_of_father ";
// The John and the fathersname and 34 and age_of_father
string result = Regex.Replace(
script,
@"\w+", // match each word
match => dict.TryGetValue(match.Value, out var value) // should the word be replaced?
? value // yes, replace
: match.Value); // no, keep as it is
答案 1 :(得分:0)
在您的问题中“无效”是什么意思?你在看什么您的代码是什么样的?
请记住,字符串是不可变的,并且string.Replace不会更改原始字符串,它会返回更改后的新字符串。
对于这样的事情(在进行大量替换时循环),StringBuilder.Replace通常是一个更好的选择。 StringBuilder实例是可变的,因此StringBuilder.Replace可以就地执行其工作。
执行以下操作:
我希望有一种方法可以使StringBuilder和Regex一起工作。