【C#】Substringメソッドで文字列内のすべての部分文字列を抽出する方法
C#では、Substring()メソッドを利用することで、ある文字列に含まれるすべての部分文字列(サブストリング)を簡単に取り出すことができます。
ここでは、次の文字列を例に説明します。
pqr
抽出する文字数(i)を1から順に増やしながら外側のループを回し、その中で開始位置(start)を移動させながらSubstringメソッドを呼び出すことで、文字列の先頭から末尾までのすべての部分文字列を取得できます。
for (int start = 0; start <= str.Length - i; start++) {
string substr = str.Substring(start, i);
Console.WriteLine(substr);
}以下が、文字列内のすべての部分文字列を検索して表示するC#プログラムの完全なサンプルです。
サンプルコード
using System;
class Demo {
static void Main() {
string str = "pqr";
for (int i = 1; i < str.Length; i++) {
for (int start = 0; start <= str.Length - i; start++) {
string substr = str.Substring(start, i);
Console.WriteLine(substr);
}
}
}
}
実行結果
p
q
r
pq
qr
ポイント解説
Substringメソッドは、第1引数に抽出の開始位置、第2引数に取り出す文字数を指定します。この2つを二重ループで組み合わせることで、長さ1文字のものから順にすべてのパターンを網羅的に列挙できます。
なお、上記のコードでは外側のループ条件が i < str.Length となっているため、元の文字列そのもの("pqr")は出力されません。完全な文字列も結果に含めたい場合は、条件を i <= str.Length に変更してください。
-
C++で一方の文字列の部分文字列がもう一方の文字列にいくつ含まれるかを調べる方法
この記事では、2つの文字列が与えられたとき、1つ目の文字列の部分文字列のうち、2つ目の文字列内に存在するものがいくつあるかを求める方法を解説します。なお、同じ部分文字列が複数回出現する場合は、その回数もカウント対象となります。具体例入力 : string1 = fogl string2 = google 出力 : 6 説明 : string2 内に存在する string1 の部分文字列は [ o, g, l, og, gl, ogl ] の6個です。 入力 : string1 = ajva string2 = java 出力 : 5 説明 : str
-
C++で文字列の部分文字列の総数を求める方法を解説
この記事では、与えられた文字列から作成できる空でない部分文字列の個数を求める方法について解説します。入力 : string = "moon" 出力 : 10 説明 : 部分文字列は m、o、o、n、mo、oo、on、moo、oon、moon の 10 個です。 入力 : string = "yellow" 出力 : 21解法のアプローチ文字列の長さを n とします。上の例からも分かるように、考えられるすべての部分文字列の個数を求めるには、長さ n、(n-1)、(n-2)、(n-3)、……2、1 の部分文字列の個数を順に加算していく必要があります。部分文