0

さまざまな文字列レコードを含むリストがあります。一部のレコードは、セミコロンで区切られたさまざまなサブレコードで構成されています。たとえば、次のように

ライフスキル

関連トピックなし

コミュニケーション

キャリア; リスニング能力; 自己啓発; 質問スキル; コーチング/メンタリング; 認識; 募集と選定。

顧客サービス

体育

私が今やりたいのは、レコードを反復処理して、セミコロンを含むすべてのレコードを分離し、重複がないことを確認することです。

for(int i=0; i<lst.Count; i++) {
    // seperate the records that contains ';' into individual unique items
}

これどうやってするの?

4

3 に答える 3

3
        List<String> lst = new List<string>();
        lst.Add("Life Skills");
        lst.Add("Life Skills");
        lst.Add("Communication");
        lst.Add("Careers; Listening Skills;Life Skills; Personal Development; Questioning Skills; Coaching/Mentoring; Recognition; Recruitment and Selection.");
        lst.Add("No Related Topics");

        List<string> newList = new List<string>();

        foreach (string str in lst)
        {
            var temp = str.Split(';');
            if (temp.Length > 1)
            {
                for (int i = 0; i < temp.Length; i++)
                {
                    if (!newList.Contains(temp[i]))
                    {
                        newList.Add(temp[i]);
                    }
                }
            }
            else
            {
                if (!newList.Contains(str))
                {
                    newList.Add(str);
                }
            }
        }
于 2013-02-08T12:21:57.103 に答える
1

Linqを使用して実装できます

lst = lst
  .SelectMany(i => string.Split(";", i))
  .Select(i => i.Trim())
  .Distinct()
  .ToList();
于 2013-02-08T12:15:39.110 に答える
0

プログラムにある種のパーサーを実装したいとします。StackOverflowはあなたのためにあなたのプログラムを書くつもりはありませんが、私はhttp://boost-spirit.com/home/を調べることをお勧めします

おそらくライセンス上の理由で、テキスト入力をロードし、セミコロンに達するまで結果をバッファにロードしてから、バッファを文字列にコピーして配列にプッシュすることを選択した場合は、理想的です。そこから、ファイルの最後に到達するまでループを続けることができます。

于 2013-02-08T12:13:31.447 に答える