2016-04-04 8 views
0

文字列があります:===ファイルコンテンツ== \ r \ n @ここに...} \ r \ n \ r \ nここに2 ... } \ t \ r \ n \ r \ n \ r \ n \ r \ n \ rここに3 ...} \ r @ここで4 ...} \ n文字列の一部をCの位置で置き換えます。

を使用してC#を取得したい'@'で始まり '}'で終わるこの文字列の中の文字列ですが、改行やタブが修正されていないので '@'と '}'の位置を取得するのに問題があります。ここ

事前にあなたに感謝のサンプル出力です:

new string 1 = "@something here... }"; 
new string 2 = "@something here 2... }"; 
new string 3="@something here 3... }"; 
new string 4="@something here 4...}"; 
+1

使用IndexOfメソッドとのlastIndexOfとをサブストリング – rashfmnb

答えて

0

あなたは正規表現を使用することができます:以下

var regex = new Regex(@"@[^}]*}"); 
var listOfMatches = new List<string>(); 
for (var match = regex.Match(inputString); match.Success; match = match.NextMatch()) 
{ 
    listOfMatches.Add(match.Value); 
} 
1

を参照してくださいコード:その後、

string[] getSubstrings(string str) 
{ 
    return str.Split('@') 
     .Select(s => "@" + s.Substring(0, 1 + s.IndexOf('}'))) 
     .ToArray(); 
} 
+0

を使用すると、.Selectの最後に閉じかっこがありませんでした。素晴らしい答え。簡潔です。 +1 – NoSaidTheCompiler

+0

@NoSaidTheCompiler、ありがとう、私はあまりにも私のためにそれらを強調表示するVisual Studioに依存している、ブラウザで入力するときに開いたかっこの数を維持する:) –

+0

私はこの1つを試して、それは私の作品です本当にこれを感謝します。私はこれに関連する別の懸念を持っています。 まず、 '; @ "example"; @ something something here 3 ...} "で文字列をバイパスする方法。 return str.Split( '@')の前に執行令を追加する必要がありますか? 秒。文字 '}'または@が '@}の中にある'と言うと、ターミネータとしてではなく文字列の一部として扱われるべきです。 サンプル出力文字列:@BOOK_SERVIE;日付01/2015 \ r \ n {\ r \ n \t BOOK CONTENT; \t chapter1 page2; ' C¢}> '\ r \ n第2章b8、;' @ C¢} 8 '} –

関連する問題