0

たとえば、さまざまな情報が含まれる文字列があります。

string str = "

Description: 
TEXT,TEXT,TEXT,TEXT,TEXT,TEXT

Note:
TEXT1,TEXT1,TEXT1,TEXT1,TEXT1

Description: 
TEXT2,TEXT2,TEXT2,TEXT2,TEXT2

Note:
TEXT3, TEXT3, TEXT3, TEXT3, TEXT3"

どういうわけかそれを解析して、この結果を取得したい:

resultString1 = "  
Description: 
TEXT,TEXT,TEXT,TEXT,TEXT,TEXT

Description: 
TEXT2,TEXT2,TEXT2,TEXT2,TEXT2" 

resultString2 = 
Note:
TEXT1,TEXT1,TEXT1,TEXT1,TEXT1

Note:
TEXT3, TEXT3, TEXT3, TEXT3, TEXT3"

更新しました

私はファイルからこの情報を読んでいるので、文字列はループで埋められ、各説明とメモの後に新しい行があるので、おそらく次のメモの出現まで読み取る小さなアルゴリズムである必要があり、メモが見つかった場合次の新しい行まで読み上げます..そのようなもの。

4

4 に答える 4

2

コンテンツのオーダー/カットを希望されているようです。

考えられる解決策は次のとおりです。

// string to sort / cut
string str ="
Description: 
TEXT,TEXT,TEXT,TEXT,TEXT,TEXT

Note:
TEXT1,TEXT1,TEXT1,TEXT1,TEXT1

Description: 
TEXT2,TEXT2,TEXT2,TEXT2,TEXT2

Note:
TEXT3, TEXT3, TEXT3, TEXT3, TEXT3";

//List of string to retrieve tags descriptions
List<String> tagsDescriptions = new List<String>();
//List of string to retrieve tags notes
List<String> tagsNotes = new List<String>();

// Read str and get only the Description content 'sample'
using (StringReader reader = new StringReader( text )) 
            { 
                string line; 
                bool getContent = false;
                while ((line = reader.ReadLine()) != null) 
                { 
                    if(getContent)
                    {
                        tagsDescription.Add(line);
                        getContent = false;
                    }
                    if(line.contain("Description"))
                    {
                        getContent = true;

                    }
                } 
            } 
于 2013-03-06T17:16:22.707 に答える
0

これを試すことができます。私はこれをテストしていませんが、あまり効率的ではありません。ガイドとして使用してください。これは、Description: >> Note: の形式に従うことを前提としています。Note 変数を取得するには、同様のことを行う必要があります。:

string input = @"

Description: 
TEXT,TEXT,TEXT,TEXT,TEXT,TEXT

Note:
TEXT1,TEXT1,TEXT1,TEXT1,TEXT1

Description: 
TEXT2,TEXT2,TEXT2,TEXT2,TEXT2

Note:
TEXT3, TEXT3, TEXT3, TEXT3, TEXT3";

int startPosition = 0;
int descPosition = -1;
string descriptionResults = "";

while (input.IndexOf("Description:", startPosition) > -1)
{
    descPosition = input.IndexOf("Description:", startPosition);
    int notePosition = input.IndexOf("Note:", startPosition);

    descriptionResults += input.SubString(descPosition, notePosition);
    startPosition = descPosition;
}
于 2013-03-06T17:11:31.063 に答える
0

次の正規表現を使用すると機能します。

Description:\s*(.*)

作成されたグループを取得するだけです

結果のマッチングへのリンクは次のとおりです。リンクを保存できる.net用のオンライン正規表現テスターを知りません

于 2013-03-06T17:15:11.323 に答える
-1

2つの正規表現を使用して、必要な文字列を一致させることができます。説明は次のようになります。Description:.\r*\n*.*

そして、メモのために次のようなものがあります:Note:\r*\n*.*

Regex regex = new Regex("Description:.\r*\n*.*");
        string str1 = @"Description: 
            TEXT,TEXT,TEXT,TEXT,TEXT,TEXT

            Note:
            TEXT1,TEXT1,TEXT1,TEXT1,TEXT1

            Description: 
            TEXT2,TEXT2,TEXT2,TEXT2,TEXT2

            Note:
            TEXT3, TEXT3, TEXT3, TEXT3, TEXT3";
        string output = string.Empty;
        foreach (var match in regex.Matches(str1))
        {
            output += match;
        }


Regex regex = new Regex("Note:\r*\n*.*");
        string str1 = @"Description: 
            TEXT,TEXT,TEXT,TEXT,TEXT,TEXT

            Note:
            TEXT1,TEXT1,TEXT1,TEXT1,TEXT1

            Description: 
            TEXT2,TEXT2,TEXT2,TEXT2,TEXT2

            Note:
            TEXT3, TEXT3, TEXT3, TEXT3, TEXT3";
        string output = string.Empty;
        foreach (var match in regex.Matches(str1))
        {
            output += match;
        }

少し操作するだけで、結果を得ることができます。

于 2013-03-06T17:07:55.400 に答える