c#解析并替换string中的内容

时间:2013-10-17 11:23:08

标签: c# regex string string-parsing

这是我第一次尝试使用正则表达式。

我想要的是转换这个字符串:

" <Control1 x:Uid="1"  />

  <Control2 x:Uid="2"  /> "

" <Control1 {1}  />

  <Control2 {2}  /> "

基本上,将 x:Uid =“n”转换为 {n} ,其中 n 表示整数。

我认为它会起作用(当然不会)是这样的:

  string input = " <Control1 x:Uid="1"  />
                   <Control2 x:Uid="2"  /> ";

  string pattern = "\b[x:Uid=\"[\d]\"]\w+";
  string replacement = "{}";
  Regex rgx = new Regex(pattern);
  string result = rgx.Replace(input, replacement);

或者

  Regex.Replace(input, pattern, delegate(Match match)
  {
       // do something here
       return result
  });

我正在努力定义模式和替换字符串。我不确定我是否正在朝着正确的方向解决问题。

1 个答案:

答案 0 :(得分:3)

方括号定义character class,您不需要这里。相反,您想使用capturing group

string pattern = @"\bx:Uid=""(\d)""";
string replacement = "{$1}";

请注意使用逐字字符串以确保将\b解释为word boundary anchor而不是退格符。