替换两组括号之间的单词

时间:2015-03-29 15:04:19

标签: c# regex

我有一个字符串:

"You have just received {{PowerUpName}} from {{PlayerName}}"

然后我收到一组参数(采用JSON格式):

{"PowerUpName":"Super Boost","PlayerName":"John"}

我正在尝试解决如何用参数替换双括号内的单词,即{{PowerUpName}}。我想我需要使用正则表达式,但我不知道表达式应该是什么。我正在使用C#进行编码(并且不能使用LINQ)。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

如果字符“您刚从{{PowerUpName}}收到{{PlayerName}}”字符串始终相同,则不需要regex。 您只需对String.Replace中的每个参数使用JSON方法。

答案 1 :(得分:1)

如果要替换{{}}符号中的任何字词,则不需要LINQ:

// Input string
string str = "You have just received {{PowerUpName}} from {{PlayerName}}";
// Initializing sample dictionary object
var obj = new Dictionary<string,string>();
// Filling it out
obj.Add("PowerUpName", "Super Boost");
obj.Add("PlayerName", "John");
// Replacing the values with those in the dictionary
string output = Regex.Replace(str, "(?<=\\{\\{)(.*?)(?=\\}\\})", match => obj[match.Groups[1].Value]);
// Display result
Console.WriteLine(output);

结果:

You have just received {{Super Boost}} from {{John}}

请参阅sample program

答案 2 :(得分:0)

如果括号正确匹配且没有嵌套括号,则可以执行此操作

var obj = {"PowerUpName":"Super Boost","PlayerName":"John"};
Regex.Replace(input, @"(?<=\{\{.*?(?=\}\})", delegate(match){
    return obj[match];    
});