2017-05-26 14 views
-1

私はC#を使用して、パターンのあるすべてのサブストリングを1つのストリングから抽出したいと考えています。パターンに一致するサブストリングのすべての出現を見つけよう

私は、文字列“This is a very short sentence”を持っているのであれば、たとえば、私は5弦入手できるようにしたい:空白をリード含めるべきではないサブ文字列上記の例から

“is a very short sentence” 
“a very short sentence” 
“very short sentence” 
“short sentence” 
“sentence” 

を。得られた各文字列にインデックスでアクセスすることもできます。

正規表現を使用しようとしましたが、最初の試合をバイパスできませんでした。

SplitといくつかのLinqを使用して

+0

なぜ分割してループを書くの?順列を生成する? – degant

+2

Splitを試しましたか? –

+0

単純な擬似コード:1. Wで始まるSで始まる次の空白を見つけます。2.文字列の最後までWで始まる部分文字列を取ります。 3. S = W + 1 4.次の空白が見つからなくなるまで、ステップ1に進みます。私はあなたの宿題として実装を残します。 – Euphoric

答えて

3

を助けてください:

string text2 = "This is a very short sentence"; 

// Get all words except first one 
var parts = text2.Split(' ').Skip(1); 

// Generate various combinations 
var result = Enumerable.Range(0, parts.Count()) 
    .Select(i => string.Join(" ", parts.Skip(i))); 
+0

それは動作します、ありがとうございます – Lukasz

1

ループおよびサブストリング方法を試してください:あなたは正規表現を使用したいのはなぜ

string inputStr = "This is a very short sentence"; 
List<string> subStringList = new List<string>(); 

while(inputStr.IndexOf(' ')!=-1) 
{ 
    inputStr= inputStr.Substring(inputStr.IndexOf(' ')+1); 
    subStringList.Add(inputStr); 
} 


Console.WriteLine(String.Join("\n",subStringList)); 

Working Example

+0

@degant solution better –

+0

@ anete.anetes:もちろん、しかし、それはダウン投票の理由ですか? –

+0

はい。なぜなら、私がこれをプロダクションで見た場合、あなたはそれを@degantスタイルで書き直すことになるからです。 –

関連する問題