taglist.csv
熱血/感動/格好良い/面白い/友情 面白い/友情/格好良い/楽しい/可笑しく笑える 面白い/格好良い/熱血/楽しい/友情 考えさせられた/面白い/感動/格好良い/熱血 面白い/可笑しく笑える/楽しい/格好良い/感動
一部抜粋したものですが、上記のようにtaglist.csvが8千行ありましてその要素3を抽出し、一つのリストにまとめたプログラムを作っております。
C#
1using System; 2using System.Collections.Generic; 3using System.Linq; 4using static System.Console; 5 6namespace Taglist 7{ 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance); 13 14 try 15 { 16 // csvファイルを開く 17 using (var sr = new System.IO.StreamReader(@"D:tagList.csv", System.Text.Encoding.GetEncoding("shift-jis"))) 18 { 19 //配列をリストに変換 20 List<string> stringList = new List<string>(); 21 22 //csvの最大行取得 23 string[] lines = File.ReadAllLines(@"D:tagList.csv"); 24 string val1 = "^日本"; 25 26 for (int i = 0; i <= 4; i++) 27 { 28 // ファイルから一行読み込む 29 var line = sr.ReadLine(); 30 31 // 読み込んだ一行をカンマ毎に分けて配列に格納する 32 var tagget = line.Split(','); 33 34 //tagget[3]を/毎に分けて配列に格納 35 var tagget2 = tagget[3].Split('/'); 36 37 38 //配列をリストに変換 39 List<string> stringList = new List<string>(); 40 stringList.AddRange(tagget2); 41 //複数の要素をlistにまとめて追加 42 stringList.AddRange(tagget2); 43 44 if (stringList.Contains(val1)) 45 { 46 stringList.Remove(val1); 47 } 48 49 50 } 51 IEnumerable<string> result = stringList.Distinct(); 52 Console.WriteLine("[{0}]", string.Join(", ", result)); 53 54 } 55 } 56 catch (System.Exception e) 57 { 58 // ファイルを開くのに失敗したとき 59 System.Console.WriteLine(e.Message); 60 } 61 } 62 } 63}
出力結果としては
[熱血, 感動, 格好良い, 面白い, 友情, 楽しい, 可笑しく笑える, 考えさせられた, 怖い, 涙流した, びっくり, 勉強になった, 可 愛い, 悲しい, 美しい, ロマンチックな気分, 勇気貰った, セクシー, 道徳心&モラル, 日本 開始日:2014, 09, 09(火) まんがタイムきらら 2014年10月号, 日本 開始日:1994 ビッグコミック , 終了日:1995]
となりました。
しかし、関係のない要素もまざっており、道徳心&モラル以降の要素を削除したいプログラムを作成したいのですが、正規表現を使ってみたり、RemoveRangeが使えるんじゃないかと思いつく限り試してみましたが上手くいきませんでした。
何か良い方法がありましたら、ご教授お願いいたします。
回答1件
あなたの回答
tips
プレビュー