0

これは、正規表現を使用する最初の試みです。

私がアーカイブしたいのは、この文字列を変換することです:

" <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
  });

パターンと置換文字列を定義するのに苦労しています。問題を解決するために正しい方向に進んでいるかどうかはわかりません。

4

1 に答える 1

3

角括弧は文字クラスを定義しますが、ここでは不要です。代わりに、キャプチャ グループを使用します。

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

がバックスペース文字ではなく単語境界アンカー\bとして解釈されるように、逐語的な文字列を使用していることに注意してください。

于 2013-10-17T11:26:06.970 に答える