CSVパースロジック


folder open/close View Outline
a	"""f 
"	a
  • 通常の文字列にはダブルコーテは付加されない
  • 改行があるとダブルコーテが付加される
  • ダブルコーテで囲われている場合は、ダブルコーテはエスケープされる
  • 囲われていない場合は、エスケープされない
  • 文字列内にtabはありえない
  • 以上のことから次のようなルールが推定できる
if(ContsolChars.Newlineが含まれている){
	文字列内の"→""
	最初と最後に"を付加する
}

分解ロジックはSTとして

A:内容期待

B:内容分析中(ダブルコーテから開始)

C:内容分析中(ダブルコーテ検出)

D:内容分析中(ダブルコーテなし)

変数として期待するカラム数

A

  1. ControlChars?.tab→内容""で返却
  2. "が見つかった→Bに
  3. "以外→Cに
  4. ControlChars?.Newline→EOL

B

  1. ControlChars?.tab→積み上げた内容を返却
  2. "の場合、Cとする
  3. 以外は積み上げ

C

  1. ControlChars?.tab→積み上げた内容をアンエスケープして返却
  2. ControlChars?.Newline→積み上げた内容をアンエスケープして返却、EOL
  3. 以外は"を一つ積んでBとする

D

  1. ControlChars?.tab→積み上げた内容を返却
  2. ControlChars?.Newline→積み上げた内容を返却、EOL
  3. 上記以外→積み上げ

ナビゲーション

プロフィール

Photo Hondarer  My status

自分に正直に、目指す物を目指すかたちで、全ての人が幸せになれるシステムを削り出す職人でありたい。

Powered by
HndWiki 002000