2007年12月21日金曜日

[他]文字列の解析について(by @it)

時々以下のようなデータをMapに復元するという処理を作ることがあります。

「key=value,aaa=bbb,ccc=123」

コレをMapに復元し、キーに「aaa」を指定すると「bbb」が取得できる。まぁちょっとしたシリアライズですね。
そんな話題が@itの掲示板(java)に出ていました。
この手の処理を作るときに、方法としては以下の2種類を思いつきます。

  1. 正規表現でスマートに処理
  2. ガチでパーサを実装する
  3. 1と2のいいところどり

こういうときに私の場合「2.」で実装しちゃいます。理由は以下の2点。

  1. メンテできないと言い出す人がいる(正規表現を理解できない人結構いる)
  2. 仕様変更時に正規表現が複雑になる場合がある、または正規表現では困難

ありがちな問題として、「=」や「,」をデータに含めたい。その対策として、値を「"値"」のようにしたい。などと言れることがあるからです。

とはいえ、いまどきの.NETであればXMLSerializerでこの手の問題に発展することはないんですけどね。

0 件のコメント: