0

'='演算子のいずれかの側で式を交換するにはどうすればよいですか?

たとえば、私は持っています:

a.Text = b.ID;

サイドを変更するには正規表現が必要です:

b.ID = a.Text;

C#のVisualStudioの置換ウィンドウで正規表現を使用したい

4

4 に答える 4

6

Visual Studioの[ファイルに置換]ダイアログで、[([^= ]*) = ([^= ]*);検索する文字列]テキストボックスと[置換]ダイアログに入力します$2 = $1;。たとえば、VisualStudio2012では次のようになります。

ここに画像の説明を入力してください

于 2012-09-07T06:35:29.260 に答える
5

C#では、次のようなコードを使用してそれを行うことができます。

var text = "a.Text = b.ID;";
var regex = new Regex(@"^(?<left>[^=\s]+)\s*=\s*(?<right>[^;]+);$");
var match = regex.Match(text);
if (match.Success) {
  var newText = String.Format(
    "{0} = {1};", match.Groups["right"].Value, match.Groups["left"].Value);
}

正規表現の内訳:

  • ^:文字列の先頭に一致を固定します
  • (?<left>[^=\s]+)=:空白または空白ではない文字を少なくとも1つ一致させます。。という名前のグループにキャプチャしleftます。
  • \s*=\s*=:オプションで空白で囲まれた一致。
  • (?<right>[^;]+):ではない文字を少なくとも1つ一致させ;ます。。という名前のグループにキャプチャしrightます。
  • ;:一致し;ます。
  • $:文字列の最後に一致を固定します。

Visual Studioエディターで同様の置換を実行する場合は、[クイック置換]ダイアログボックスで次の値を使用する必要があります。

  • 何を見つける{[^=:b]+}:b*=:b*{[^;]+}
  • に置き換えます\2 = \1
  • 使用:正規表現

主な違いは、グループは括弧ではなく角かっこで定義され、空白文字グループはでは:bなく、で表されること\sです。

于 2012-09-07T06:19:41.337 に答える
3

ここアイデアがあります:

using System;
using System.Text.RegularExpressions;

class Test
{
    static void Main()
    {
        var regex = new Regex("([^=]*) = ([^;]*);");
        string input = "a.Text = b.ID;";
        string output = regex.Replace(input, "$2 = $1;");
        Console.WriteLine(output);
    }
}

これにより、の両側のスペース=と最後のセミコロンが保持されることに注意してください。ただし、これらも必要です。基本的に、コードは「=の前後でテキストを切り替える」以上のことを行う必要があります。

于 2012-09-07T06:19:55.447 に答える
2

括弧で囲まれたグループを使用します。次に例を示します。

string input = "a.Text = b.ID;";
Regex regex = new Regex("([^=]*)[=]([^=]*);");
regex.Replace(input, "$2 = $1;");
于 2012-09-07T06:17:20.277 に答える