C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のSubstring()メソッドとは?基本構文と実用例をわかりやすく解説

C#のSubstring()メソッドは、文字列から部分文字列(サブストリング)を取り出すためのメソッドです。指定した文字位置から文字列の末尾まで、あるいは指定した文字数分だけ文字列を切り出すことができます。

構文

Substring()メソッドには、次の2つのオーバーロードが用意されています。

public string Substring(int begnIndex);
public string Substring(int begnIndex, int len);

begnIndexは、対象となる文字列内における部分文字列の開始位置(0から始まるインデックス)です。lenパラメータは、取得する部分文字列の文字数を指定します。

  • Substring(int begnIndex) … 開始位置から文字列の末尾までをすべて取得
  • Substring(int begnIndex, int len) … 開始位置から指定した文字数分だけ取得

使用例1:開始位置だけを指定する場合

まずは、開始インデックスのみを渡して、そこから末尾までの文字列を取得する例を見てみましょう。

using System;
public class Demo {
    public static void Main(String[] args) {
        string str1 = "Katherine";
        string str2 = "PQRS";
        Console.WriteLine("String1 = "+str1);
        Console.WriteLine("String1 ToUpperInvariant = "+str1.ToUpperInvariant());
        Console.WriteLine("String1 Substring from index4 = " + str1.Substring(4));
        Console.WriteLine("\nString2 = "+str2);
        Console.WriteLine("String2 ToLowerInvariant = "+str2.ToLowerInvariant());
        Console.WriteLine("String2 Substring from index2 = " + str2.Substring(2));
    }
}

出力結果

String1 = Katherine
String1 ToUpperInvariant = KATHERINE
String1 Substring from index4 = erine
String2 = PQRS
String2 ToLowerInvariant = pqrs
String2 Substring from index2 = RS

str1.Substring(4)では、インデックス4(5文字目)以降の「erine」が取得されました。同様に、str2.Substring(2)では「RS」が取得されています。

使用例2:開始位置と文字数を指定する場合

次に、開始位置と取得する文字数の両方を指定する例を見てみましょう。

using System;
public class Demo {
    public static void Main(String[] args) {
        string str1 = "Notebook";
        string str2 = "Ultrabook";
        Console.WriteLine("String1 = "+str1);
        Console.WriteLine("String1 ToUpperInvariant = "+str1.ToUpperInvariant());
        Console.WriteLine("String1 Substring from index4 = " + str1.Substring(4, 4));
        Console.WriteLine("\nString2 = "+str2);
        Console.WriteLine("String2 ToLowerInvariant = "+str2.ToLowerInvariant());
        Console.WriteLine("String2 Substring from index2 = " + str2.Substring(0, 5));
    }
}

出力結果

String1 = Notebook
String1 ToUpperInvariant = NOTEBOOK
String1 Substring from index4 = book
String2 = Ultrabook
String2 ToLowerInvariant = ultrabook
String2 Substring from index2 = Ultra

str1.Substring(4, 4)では、インデックス4から4文字分の「book」が、str2.Substring(0, 5)では先頭から5文字分の「Ultra」がそれぞれ取得されました。

注意点

begnIndexやlenに負の値、あるいは文字列の長さを超える値を指定すると、ArgumentOutOfRangeException例外がスローされます。Substring()を使用する際は、文字列の長さを事前に確認するか、適切な範囲チェックを行うようにしましょう。

  1. C#のSubstringメソッドで文字列がすべて一意の文字を持つか判定する方法

    C#では、Substringメソッドを使うことで、文字列の一部分(部分文字列)を取り出すことができます。本記事では、このSubstring()メソッドを活用して、文字列内のすべての文字が一意(重複していない)であるかどうかを判定する方法を解説します。Substringメソッドによる一意文字チェックの仕組み基本的な考え方はシンプルです。文字列の長さ分だけループを回し、各位置からSubstring()メソッドで1文字ずつ取り出します。そして、取り出した文字同士を比較していきます。もし異なる位置にある部分文字列同士が一致した場合、その文字列には重複した文字が含まれていることになります。つまり、すべて

  2. RubyのArray#zipメソッド徹底解説!2つの配列をスマートに結合する方法

    2つの配列を要素ごとに比較して、その違いを見つけたいと思ったことはありませんか? あるいは、各インデックスごとに最大の数値を求めたい、キーのリストと値のリストを組み合わせてハッシュを作りたい――そんな場面にも出会うことがあるでしょう。 …これを「面倒な方法」で実装すると、次のようなコードになります。 例:冗長な書き方 a = [1,2,3,4,5] b = [1,2,3,6,8] c = a.map.with_index { |_, idx| [a[idx], b[idx]] } # [[1, 1], [2, 2], [3, 3], [4, 6], [5, 8]] 確かに動作はしますが