メールアドレスが改行くぎりで列挙されてるテキストから重複がないか確認しないといけなくなったので、どうせなのでF#で書いてみた。どうだろう?まだまだスマートに書けるかな・・・。
open System open System.IO let distinctCheck (stream : StreamReader) = // 分割して let addresses = stream.ReadToEnd().Split([|Environment.NewLine|], StringSplitOptions.RemoveEmptyEntries) // 重複排除して let distinctAddresses = addresses |> Seq.distinct |> Seq.toArray // 長さ比べ printfn(if addresses.Length = distinctAddresses.Length then "OK" else "NG") using(new StreamReader("input.txt")) distinctCheck
因みに想定しているインプットはこんな感じです。
hogehoge@sample.com mogemoge@sample.com chomechome@sample.com
上記は重複がないのでOKと出る。以下のように重複があるとNGと出る。
hogehoge@sample.com mogemoge@sample.com hogehoge@sample.com
残念ながら、手持ちのファイルではNGと表示された・・・。これから何が重複してるか探すお仕事。