0

「ga?abg」のように2つの単語がある場合

2番目の単語の最初の2文字が「?a」と一致する場合は削除し、「b」の後に取って最初の単語に追加しますか?

どうやってやるの?助けてください

string five ="ga ?abg";
string T = Regex.Replace(five, "?a", " ");

しかし、最初の「b」を追加する方法は?

結果は「gabg」になります。

4

3 に答える 3

1

私はc#を使用していませんが、このようなものが必要だと思います。構文が間違っている可能性があります。(また、あなたの説明は紛らわしいので、私はあなたが何を望んでいるのか理解していないかもしれません)

Regex.Replace(five, "([^ ]+) \\?a([^ ])", "$1$2")

どこ:

  • 「(...)」は一致するグループであり、$nはn番目の一致するグループの内容をコピーします
  • 「[^]」は「スペース以外の任意の文字」を意味します
  • 「[^]+」は「1つ以上の非スペース文字」を意味します
  • 「\?」疑問符は正規表現で特別なので、「文字通りの疑問符」を意味します
于 2012-05-01T23:49:54.963 に答える
0

これが正規表現でなければならない特別な理由はありますか?

string answer;
string[] split = five.Split(' ');
if (split.Length == 2 && split[0].Length > 0 && split[1].StartsWith("?a") && split[1].Length > 3)
{
    answer = string.Format("{0}{1} {2}", split[0], split[1].Substring(2, 1), split[1].Substring(3));
}
else
{
    answer = five;
}

または、 MatchEvaluator Delegateを使用することもできますが、それでもカスタムコードが必要です。私はあなたが単純なことを通してあなたが求めていることをすることができるとは思わないRegex.Replace

于 2012-05-02T00:11:15.023 に答える
0

あなたが探している正規表現はこれだと思います:

/ \?a./

私はC#を知らないので、ここにjsfiddleがあります(jsがわからない場合に備えて、単純にしています)

于 2012-05-01T23:53:04.573 に答える