2017-05-18 4 views
0

あなたは次のように見えるその製品の文字列を持っているにサイト上で表示:レギュラーフィットとクラシックなボタンダウンの襟 と分割文字列と二つのブロック(C#の)

スーパーいいとシンプルなシャツ。これは、フロントダウンボタンと2つの胸ポケットが閉じます。

カラー:ネイビー

材質:私は一貫しkunnetは、この文字列を分割しているんたい何綿100%

、私が説明に最初のパーティを表示することができSA、および詳細セクション内の他のもの(...色:...資料)。

あなたはEnvironment.NewLineに分割して試してみましたが、それはラインをキャッチしません。 上部(説明)に複数の段落があるかもしれません。

ありがとう!

+2

は 'Farve'は常に説明を区切るありますか? – Pikoh

+0

私はそれがないとは思いません。これは問題です。私たちは最初の部分では全くDEMを使用するとは思わない原因私は、コロンを考えていました。 –

+0

はその後、それは私たちにとって非常にbesværligt2つのフルです。あなたは、第1の共通のセパレータを見つけるすべてのケース2をanalizeしなければならない – Pikoh

答えて

1

あなたは反復ライン・バイ・ラインを試してみて、行が記述の一部であるかどうかを判断したり、それは「詳細」です場合があります。あなたが手の前に可能なすべての詳細を知っている唯一の要件小胞体。

このような何かがうまくいくかもしれない(テストしていません):このコードから「テキスト」を実行した後

string[] detailTypes = {"Farve:", "Materiale:"}; // Add any number of details here if there are more 

StringBuilder description = new StringBuilder(); 
List<String> details = new List<String>(); 

foreach (string line in new LineReader(() => new StringReader(text))) // text is the whole string 
{ 
    bool isDetail = false; 
    foreach(string det in detailTypes) 
    { 
     if(line.StartsWith(det)) 
     { 
      isDetail = true; 
      break; 
     } 
    } 

    if(isDetail) 
     details.Add(line); 
    else 
     description.AppendLine(line); 
} 

、あなたはthatyour説明のStringBuilder氷全体の説明を見つけるだろう、と詳細がでます文字列のリスト。

次のような記述の文字列値を取得することができます:あなたのすべての詳細情報は、コードの先頭に配列している場合description.ToString()

これはしかし、動作します。しかし、あなたは、可能なすべての詳細を知らない場合、およびtheyhave無いユニークな区切り文字は、コンピュータは、entenをその人自身を知ることができません。

代替:あなたは詳細がわからない場合

あなたはコロンを使用することができます。代わりにif(line.StartsWith(det))のあなたは、このアプローチを選択した場合、あなたはif(line.Contains(":"))

ような何かを行うことができ、内側のforeachループとdetailTypes配列を取り除きます。

編集:

編集2ホルヘTurrado

+0

おかげで、私はこれを試してみましょう。 –

0

より良いいけないの使用文字列+ =文字列の提案が含まれています。 StringBuilderのは、より良い性能を持っており、それは、使いやすい

StringBuilder sb = new StringBuilder(); 
sb.Append(""); // AddText 
sb.AppendLine(""); //AddLine 
sb.ToString(); // Get the result string 
+0

良いキャッチ!私はこれを含めるために私の答えを編集しました。それは他の改良も使用することができますが、これは重要な概念です。ありがとう! – Clay07g