2011-12-03 9 views
1

ことで文字列を分割します。私は、元の1のサブある別の文字列によって分離する必要がある文字列を得た別の文字列

string s = "<DOC>something here <TEXT> and some stuff here </TEXT></DOC>" 

そして、私は取得したい:

"and some stuff here" 

私は"<TEXT>"と彼のロッカー"</TEXT>"の間の文字列を取得する必要がありますのは、私は次のテキストを得たとしましょう。

私は、関数のパラメータの一つは、タイプstring[]であるにも関わらず、文字列の一般的な分割方法でそうするために管理していません。私は何をしようとしていることである:あなたの親切な助けを事前に

Console.Write(s.Split("<TEXT>")); // Which doesn't compile 

感謝。終了タグは「</TEXT>」であるため、「<TEXT>」に

+0

は最後のタグ ''や ''ですか? – dasblinkenlight

+0

あなたは正しいです.... doc私はそれを編集します –

+0

あなたの例は、あなたが分割していないが、抽出していることを示唆しています。 –

答えて

2
var start = s.IndexOf("<TEXT>"); 
var end = s.IndexOf("</TEXT>", start+1); 
string res; 
if (start >= 0 && end > 0) { 
    res = s.Substring(start, end-start-1).Trim(); 
} else { 
    res = "NOT FOUND"; 
} 
+0

endOfは 'start'の値から検索を開始します。 –

+0

@AshBurlaczenkoありがとう、それは良い提案です!私は...私の文字列が dasblinkenlight

1

分割は、とにかくこのケースであなたを助けるために行くのではありません。

最も堅牢なソリューションをXMLとして適切にそれを解析することです。 C#はそのための機能を提供します。 http://msdn.microsoft.com/en-us/library/cc189056%28v=vs.95%29.aspxの2番目の例は正しい軌道に乗るはずです。

あなただけの間に合わせと-1回のソリューションを探している場合は、あなたの最善の策は、上記dasblinkenlightのソリューションとして何かを、コードに手にすることになるだろう。

0

最後のタグが</doc>の場合は、XElement.Loadを使用してXMLを読み込んでから、必要な要素(Linq To XMLを使用することもできます)を検出するために使用できます。

これは必ずしも正しいXML文字列ではない場合、あなたは常にテキストの所望の部分を見つけることRegural Expressionsで行くことができます。この場合、表現は自分で書くのは難しいことではありません。

1
string s = "<DOC>something here <TEXT> and some stuff here </TEXT></DOC>"; 
string result = Regex.Match(s, "(?<=<TEXT>).*?(?=</TEXT>)").Value; 

編集:私は接頭辞と接尾辞の間の位置と一致します。この正規表現パターン(?<=prefix)find(?=suffix)を使用しています。

EDIT 2: いくつかの結果を探す:

MatchCollection matches = Regex.Matches(s, "(?<=<TEXT>).*?(?=</TEXT>)"); 
foreach (Match match in matches) { 
    Console.WriteLine(match.Value); 
} 
+0

すぐに編集をやる2 。 –

+0

の多くは、私のEDIT番号を参照してください含まれ、このようにreasultsの多くを取得する方法のいくつかの並べ替えがあり、私はreasultsのacoupleを取得する必要があります... –

1
var output = new List<String>(); 
foreach (Match match in Regex.Matches(source, "<TEXT>(.*?)</TEXT>")) { 
    output.Add(match.Groups[1].Value); 
} 
+0

出力リストには何もありません(助けてくれてありがとう) –

+0

@NadavStern: '?'を忘れました。今はうまくいくはずです。 – Otiel

+0

まだ不幸にも働いていません –

関連する問題