質問: "かきくけこさしくせそあいくえお";` 最後の"く"を "う" に置換したい。 次は、"く" を "す" に置換したい。 例では、規則性があるように見えますが、実際の データは、置換する文字列の前後は、規則性がありませんので 正規表現は、使用できません。 以上
回答: 通常、このような条件だとsayuriさんの例のように正規表現で処理するのが常道かと思います。 が、どうしても、System.Text.RegularExpressions名前空間は親の仇で使えない等の理由があるのであれば、お手軽なメソッドは用意されていないと思われるので、String.LastIndexOf()と.Substring()を使ってちまちま切張りするのがおそらく一番ストレートなアプローチになるでしょう。 ``` static void Main(string[] args) { var source = "かきくけこさしくせそあいくえお"; var a1 = ReplaceLastMatch(source, "く", "う"); var a2 = ReplaceLastMatch(a1, "く", "す"); Console.WriteLine(a2); } private static string ReplaceLastMatch(string str, string target, string alternative) { var pos = str.LastIndexOf(target); if (pos >= 0) return str.Substring(0, pos) + alternative + str.Substring(pos + target.Length); return str; } ```