.net column

.NET開発者のためのブログメディア

【C#正規表現の使い方2】Replaceメソッドで文字列を置換する

2020年07月31日

「Replace」を日本語にすると「交換する」のような意味となりますが、Replaceメソッドはその名のとおり、文字列を置換する役割があります。
この記事では、正規表現を使用した文字列の置換を紹介します。アプリケーションを作成する中でも役に立つメソッドだと思うので、ぜひ参考にしてみてください。

PG
仕様書に「数値部分を『*』に変換して出力」とあるのですが、1文字ずつ判別して変換していけば良いのでしょうか?
PL
確かに1文字ずつ判別しても実現可能ですね。ただ便利なメソッドも用意されているので、「C#」「正規表現」「置換」をヒントに調べてみてください。

実行環境
・Windows 10 Home
・Visual Studio Community 2019

Regex.Replaceメソッドの概要

C#で正規表現を使用した文字列の置換を行う場合、Regex.Replaceメソッドを使用します。正規表現の使用により、通貨記号文字や空白、番号付きグループなども簡単に置換できるようになります。
Regex.Replaceメソッドには複数の定義が存在しますが、主なパターンを例に挙げて紹介します。基本の構文は下記のとおりです。

正規表現パターンを指定したRegexのインスタンスを生成後、Replaceメソッドを呼び出します。入力文字列のうち、指定された正規表現パターンに一致する文字列を、置換文字列に置き換えます。

文字列を指定した置換

まずは、シンプルに文字列を指定して置換します。

次は、正規表現を使用して文字列を置換してみましょう。
今回使用する正規表現パターンは以下のものです。

パターン 説明
\d 数値(0~9)
\s+ 空白文字
+ 1回以上の一致
「+」によって1個以上の空白を指定しているので、連続した空白文字も「-」に置換されていますね。(「1-2—3」とはならない)

番号付きグループの置換

正規表現を( )で囲むことにより、一致する部分文字列をグループ化することができます。
今回新たに使用する正規表現パターンは以下のものです。

パターン 説明
( ) 一致する部分文字列をグループ化※
\D 数値以外
? 0回または1回の一致

※グループは1から順番に割り当てられ、最初のグループを置換時に参照したい場合は「$1」で表現する。

それでは、グループ化を使用して、部分置換を行ってみましょう。

数値の部分がグループ化されて、先頭をZに置換して出力されていますね。

PG
なるほど、このようなメソッドは知らなかったので大変勉強になりました!正規表現を使っていろいろなバリエーションを試してみます。
PL
知らないことを自分で調べて身につけていくことは、とても大切なことです。これからも頑張ってくださいね。

正規表現を使えば簡単に文字列を置換できる

今回はRegex.Replaceを使用した文字列の置換を紹介しました。最初は正規表現を難しく感じるかもしれませんが、使い慣れてくると大変便利に文字列を置換することができます。
この機会に是非活用してみてください。

>>>C#の案件を探すならFEnet .NET Navi


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)