新人採用…終了?
というわけで、また社員募集しています での採用も大方終了しました。
いつもの事で Joel テストに従って書き問題をやったので問題を晒してみます。
CSVの生成
以下の仕様に基づいてCSV出力を行うコードを実装して下さい。(記述言語は問いません)
・文字列と数値からなるデータを出力する
・各レコードは改行で区切られる(以下例外あり)
・文字列はダブルクォート(")で囲まれる
・文字列内で2つの連続するダブルクォートを一つのダブルクォートのエスケープとして扱う
・文字列内での改行が許される
public struct Field {
public bool IsString; // 要素が string の場合には true
public string StringValue;
public int IntegerValue;
}
において、以下のメソッド形式で実装して下さい。
public static void WriteCsv( string pathName, IEnumerable< Field[] > records )
こんな感じ。
P.S.
BCL4.0ではストリームがIEnumerable食えるようになるらしいねー
だからと言って
using( var sw = new StreamWriter( pathName ) ) sw.WriteLines( from rec in records let recString = (from field in rec select field.IsString ? "\""+ field.StringValue.Replace("\"","\"\"") +"\"" : field.IntegerValue.ToString() ) ).Join(",") select recString );
とかワンライナーやる奴は某誰かと同類という事でご遠慮いただけると幸いです。
投稿日時 : 2009年11月6日 16:21
Tweet
コメントを追加
# re: 新人採用…終了? 2009年11月6日 16:28 某オレがルールだった人
いいじゃないっすか。ワンライナー最高じゃないっすか!
# <br> Twitter Trackbacks for<br> <br> ???????????????????????? <br> [ailight.jp]<br> on Topsy.com<br> 2009年11月7日 12:30
Twitter Trackbacks for
????????????????????????
[ailight.jp]
on Topsy.com