今回は、VB.NETのReplaceで文字列を置換する方法についてご紹介します。
Replaceとは
Replaceは、特定の文字列を探し出し、別の文字列に置き換えた新しい文字列を返す機能です。
VB.NETでは、.NET FrameworkのString.Replaceメソッドと、Microsoft.VisualBasic.Strings.Replaceメソッドの2種類が主に利用されます。
これらはいずれも元の文字列を直接変更せず、置換後の新しい文字列を生成する点に注意が必要です。
String.Replaceメソッドの基本的な使い方
String.Replaceメソッドは、VB.NETのString型が持つインスタンスメソッドです。
大文字と小文字を区別しながら、指定した文字列をすべて置換します。
メソッドのシンタックスは以下のとおりです。
1 |
Dim newStr As String = originalStr.Replace("置換前文字列", "置換後文字列") |
以下に具体例を示します。
1 2 3 |
Dim original As String = "Hello World" Dim replaced As String = original.Replace("World", "VB.NET") ' "World"を"VB.NET"に置換する Console.WriteLine(replaced) ' 出力: "Hello VB.NET" |
Hello VB.NET
この例では、”World” が “VB.NET” に置き換えられ、新しい文字列 “Hello VB.NET” が生成されます。
なお、元の文字列 original はそのまま残るため、変更を適用する場合は置換後の戻り値を利用してください。
複数箇所の置換と大文字小文字の扱い
String.Replaceメソッドを呼ぶと、指定された文字列が見つかったすべての箇所を置換します。
大文字と小文字は区別されるため、”Hello” と “hello” は別の文字列として扱われます。
複数箇所が置換される例を示します。
1 2 3 |
Dim text As String = "apple, banana, apple, grape" Dim replacedText As String = text.Replace("apple", "orange") ' 文字列中のすべての"apple"を"orange"に置換 Console.WriteLine(replacedText) ' 出力: "orange, banana, orange, grape" |
orange, banana, orange, grape
このように指定した文字列が複数見つかった場合、すべて置換対象となります。
しかし、大文字小文字は区別されるため、異なるケースの文字列は置換されない点に注意してください。
Microsoft.VisualBasic.Strings.Replaceメソッドの活用
VB.NETには、Microsoft.VisualBasic.Strings.Replaceメソッドも用意されています。
これは大文字小文字を無視した比較や、置換回数の指定など、より詳細な制御が可能です。
シンタックスは以下のとおりです。
1 2 3 4 5 6 7 8 |
Dim newStr As String = Microsoft.VisualBasic.Strings.Replace( expression, find, replacement, [start], [count], [compare] ) |
expression は置換対象の文字列、find は検索文字列、replacement は置換後の文字列を指します。
さらに、start パラメータで検索を開始する位置、count パラメータで置換回数、compare パラメータで比較方法(大文字小文字の区別など)を指定できます。
大文字小文字を無視した置換
compareパラメータに CompareMethod.Text を指定することで、大文字小文字を区別せずに置換できます。
下記の例では、”Hello” と “hello” の両方を一度に置換しています。
1 2 3 4 5 6 7 8 9 10 |
Dim text As String = "Hello hello" Dim replacedText As String = Microsoft.VisualBasic.Strings.Replace( text, "hello", "hi", 1, -1, CompareMethod.Text ) Console.WriteLine(replacedText) ' 出力: "hi hi" |
hi hi
このように、大文字小文字を意識せずに処理できるので、ユーザーからの入力や不特定の文字列を扱うシーンで役立ちます。
文字列置換時の注意点
不変性により、Replaceを使うと新たな文字列オブジェクトが生成されるため、繰り返し実行する場合はパフォーマンスに注意が必要です。
大量の文字列操作を行う場合は、StringBuilderを利用するなどの方法も検討すると良いでしょう。
置換対象が見つからない場合は何も置き換えが行われず、元の文字列がそのまま返されます。
大文字小文字の区別を柔軟に扱いたい場合は、Microsoft.VisualBasic.Strings.Replaceで CompareMethod.Text を活用してください。
まとめ
VB.NETでの文字列置換には、String.ReplaceかMicrosoft.VisualBasic.Strings.Replaceが利用できます。
用途に応じて大文字小文字や置換回数などを制御し、適切なメソッドを選択することが大切です。
文字列の不変性やパフォーマンス面にも注意しながら、目的に合わせて使い分けてみてください。