DOBON.NET

文字列を挿入する

ここでは、文字列の任意の位置に別の文字列を挿入する方法を幾つか紹介します。

String.Insertメソッド

String型の文字列に別の文字列を挿入するには、String.Insertメソッドを使います。String.Insertメソッドを使うと、指定した位置に指定した文字列を挿入できます。

String.Insertメソッドは、挿入された結果の文字列を返します。基の文字列は変更しません。

以下にString.Insertメソッドを使った例を示します。

VB.NET
コードを隠すコードを選択
Dim s As String = "0123456789"

'5文字目の後(インデックスが5の位置)に文字列を挿入する
Dim s1 As String = s.Insert(5, "-")
's1 は "01234-56789" となる
's は "0123456789" のまま
C#
コードを隠すコードを選択
string s = "0123456789";

//5文字目の後(インデックスが5の位置)に文字列を挿入する
string s1 = s.Insert(5, "-");
//s1 は "01234-56789" となる
//s は "0123456789" のまま

なお文字列の先頭や末尾に文字列を挿入するときは、String.Insertメソッドを使わずに、連結演算子を使って文字列を連結したほうが良いです。このことは、「C# Insert String Method」で指摘されています。

StringBuilder.Insertメソッド

StringBuilderの場合も、StringBuilder.Insertメソッドで文字列を挿入できます。StringBuilder.InsertはString.Insertと違い、StringBuilderオブジェクトの内容が変更されます。

StringBuilder.Insertメソッドを使った例を以下に示します。

VB.NET
コードを隠すコードを選択
Dim s As String = "0123456789"

'StringBuilderオブジェクトを作成する
Dim sb As New System.Text.StringBuilder(s)

'5文字目の後(インデックスが5の位置)に文字列を挿入する
sb.Insert(5, "-")
'「01234-56789」となる

'7文字目の後に文字列を2回挿入する
sb.Insert(7, "/", 2)
'「01234-5//6789」となる

'StringBuilderを文字列に変換する
Dim s1 As String = sb.ToString()
C#
コードを隠すコードを選択
string s = "0123456789";

//StringBuilderオブジェクトを作成する
System.Text.StringBuilder sb = new System.Text.StringBuilder(s);

//5文字目の後(インデックスが5の位置)に文字列を挿入する
sb.Insert(5, "-");
//「01234-56789」となる

//7文字目の後に文字列を2回挿入する
sb.Insert(7, "/", 2);
//「01234-5//6789」となる

//StringBuilderを文字列に変換する
string s1 = sb.ToString();

String.InsertとStringBuilder.Insertのパフォーマンスの比較

String.InsertとStringBuilder.Insertの使い分けは、「文字列処理を高速に行う」で説明しているように、同じ文字列に対して複数回挿入を行う場合はStringBuilder.Insertメソッドを使うというのが一般的な考え方です。

具体的に何回挿入を繰り返すときにStringBuilder.Insertを使った方が良いかに関しては、「StringBuilder vs. String / Fast String Operations with .NET 2.0」が参考になります。これによると、2回以上挿入する場合はString.InsertよりStringBuilder.Insertの方が速くなるということです。

文字列置換によって、指定した文字列の前後に挿入する

ある文字列の直前、あるいは直後に文字列を挿入したい場合は、文字列の置換によって行う方法があります。なお文字列を置換する方法については、「文字列を置換する」で説明しています。

以下に、文字列の置換によって文字列を挿入する例を示します。

VB.NET
コードを隠すコードを選択
Dim s As String = "明日もいい天気でしょう。"

'「明日も」の後に「あさっても」を挿入する
Dim s1 As String = s.Replace("明日も", "明日もあさっても")
'明日もあさってもいい天気でしょう。

'「いい天気」の前に「きっと」を挿入する
Dim s2 As String = s.Replace("いい天気", "きっといい天気")
'明日もきっといい天気でしょう。
C#
コードを隠すコードを選択
string s = "明日もいい天気でしょう。";

//「明日も」の後に「あさっても」を挿入する
string s1 = s.Replace("明日も", "明日もあさっても");
//明日もあさってもいい天気でしょう。

//「いい天気」の前に「きっと」を挿入する
string s2 = s.Replace("いい天気", "きっといい天気");
//明日もきっといい天気でしょう。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。
共有する

この記事への評価

この記事へのコメント

この記事に関するコメントを投稿するには、下のボタンをクリックしてください。投稿フォームへ移動します。通常のご質問、ご意見等は掲示板へご投稿ください。