.NET TIPS

文字列中の指定された位置の文字列を取得するには?

デジタルアドバンテージ
2004/01/23

 ある文字列から、指定された位置にある文字列を取得する場合には、Stringクラス(System名前空間)のSubstringメソッドを使用する。.NETでは、文字列は暗黙的にStringクラスのインスタンスであるため、文字列オブジェクトに対してSubstringメソッドを呼び出せばよい。

 Substringメソッドには2つのバージョンがあり、1つあるいは2つのパラメータを指定する。2つのパラメータを指定するバージョンでは、取得する文字列の開始位置と、取得する文字列の長さをパラメータで指定する。取得する文字列の開始位置のみを指定するバージョンでは、指定した位置から末尾までの文字列を取得できる。

 次のC#のサンプル・プログラムは、それぞれのバージョンのSubstringメソッドを利用した例である。

// substr.cs

using System;

public class SubStringSample {
  static void Main() {
    string str = "先頭の文字列真ん中の文字列末尾の文字列";
               // 0 1 2 3 4 5 6 7 8 9 101112131415161718

    string centerStr = str.Substring(6, 7);
    Console.WriteLine(centerStr); // 出力:真ん中の文字列

    string rightStr = str.Substring(13);
    Console.WriteLine(rightStr);  // 出力:末尾の文字列
  }
}

// コンパイル方法:csc substr.cs
Substringメソッドを使用したC#のサンプル・プログラム(substr.cs)

VB.NETのLeft、Mid、Right関数

 Visual Basic .NET(以下VB.NET)では、Substringメソッドと似た働きをする3つの関数が用意されている。

 文字列の左端から指定した長さの文字列を取得するLeft関数、指定した位置から指定した長さの文字列を取得するMid関数、文字列の右端から指定した長さの文字列を取得するRight関数である(これらの関数はすべてMicrosoft.VisualBasic名前空間のStringsモジュールに含まれている)。

 次のVB.NETのサンプル・プログラムは、それぞれの関数の使用例と、それをSubstringメソッドで記述した場合の例を示している。

' substr.vb

Imports System
Imports Microsoft.VisualBasic

Class SubStringSample
  Shared Sub Main()

    Dim str As String = "先頭の文字列真ん中の文字列末尾の文字列"
                       ' 0 1 2 3 4 5 6 7 8 9 101112131415161718

    Dim leftStrVB As String = Left(str, 6)
    Dim leftStr   As String = str.Substring(0, 6)

    Console.WriteLine(leftStrVB)   ' 出力:先頭の文字列
    Console.WriteLine(leftStr)     ' 出力:先頭の文字列

    Dim centerStrVB As String = Mid(str, 7, 7)
    Dim center      As String = str.Substring(6, 7)

    Console.WriteLine(centerStrVB) ' 出力:真ん中の文字列
    Console.WriteLine(center)      ' 出力:真ん中の文字列

    Dim rightStrVB As String = Right(str, 6)
    Dim rightStr   As String = str.Substring(13)

    Console.WriteLine(rightStrVB)  ' 出力:末尾の文字列
    Console.WriteLine(rightStr)    ' 出力:末尾の文字列

  End Sub
End Class

' コンパイル方法:vbc substr.vb
3つの文字列操作関数とSubstringメソッドを使用したVB.NETのサンプル・プログラム(substr.vb)

 ここに示したように、いずれの関数もSubstringメソッドで置き換え可能である。

 Substringメソッドでは開始位置のインデックス番号が0から始まるのに対して、Mid関数では1から始まる点には注意が必要である。Mid関数がこのような仕様になっているのは、Visual Basic 6.0以前のバージョンのMid関数がそうだったためである。

 また、.NETでは文字列はすべてUnicodeである。このため、文字列を明示的にUnicodeとして処理するために提供されていたRightB関数、MidB関数、LeftB関数は、VB.NETではもはやサポートされていない。End of Article

カテゴリ:クラス・ライブラリ 処理対象:文字列
使用ライブラリ:Stringクラス(System名前空間)
使用ライブラリ:Left関数(Microsoft.VisualBasic名前空間)
使用ライブラリ:Mid関数(Microsoft.VisualBasic名前空間)
使用ライブラリ:Right関数(Microsoft.VisualBasic名前空間)
 
この記事と関連性の高い別の.NET TIPS
文字列中の1文字を取得するには?
文字列で指定したメソッドを呼び出すには?
文字列を文字列により分割するには?(VB.NET関数活用)
文字列から特定の文字列を取り除くには?
Win32 APIやDLL関数に文字列や文字列バッファを渡すには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間