文字列内の単一の(最後または最後から2番目の)一致を置き換えようとしています。私はすでに正規表現を持っていて、それは機能しますが、それはすべてのアイテムを置き換えます、そして私は戻って単一のアイテムを置き換える必要があります。
Regex.Replace(BaseString、MatchString、ReplacementString)
MatchEvaluatorを使用したいのですが、方法がわかりません。
何か助けはありますか?
文字列内の単一の(最後または最後から2番目の)一致を置き換えようとしています。私はすでに正規表現を持っていて、それは機能しますが、それはすべてのアイテムを置き換えます、そして私は戻って単一のアイテムを置き換える必要があります。
Regex.Replace(BaseString、MatchString、ReplacementString)
MatchEvaluatorを使用したいのですが、方法がわかりません。
何か助けはありますか?
MatchEvaluatorは単なるデリゲートです。関数を渡します。
あなたの場合、次のようなものを使用してください。
Regex.Replace(BaseString、MatchString、delegate(Match match) {{ bool last = match.NextMatch()。Index == 0; if(最後) match.Valueを返します。 そうしないと 戻り値ReplacementString; }、RegexOptions.Compiled);
このコードは最後の一致をスキップします。同様の方法で、最後から2番目の一致を確認することもできます。
MatchEvaluatorの使用方法の詳細については、この質問も参照してください:Regex.ReplaceのMatchEvaluatorはどのように機能しますか?
これは、文字列の最後のオカレンスを置き換えるためのものです。
String testString = "It is a very good day isn't it or is it.Tell me?";
Console.WriteLine(Regex.Replace(testString,
"(.*)(it)(.*)$",
"$1THAT$3",
RegexOptions.IgnoreCase));
最後から2番目を置き換えるタイミングを指定できれば、それを含めるように回答を編集できます。
ループ内で検索し、最後の一致位置を保存してから、置き換えます