32nd Diary

トップ | 最新 | 過去の日記 | もっと過去の日記

2004年
5月
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
めーるあどれす
ruby -rbase64 -e'puts Base64.decode64 %q(dGFrYW5vMzJAZ21haWwuY29t)'



2004-05-23 (Sunday) [長年日記]

[Java][Work] 似非Propertiesクラスを作った.

Propertiesクラスが普通の方法では日本語を使うことができないので,日本語を扱えるものを自分で作った.

仕事で作ったため,流石にプログラムのコードを載せてしまうのはどうかな〜と思うので,概要について書いてみようと思う.

方針としてはPropertiesを継承した新しいクラスを作ることにした.

新たにpublic void load(Reader inReader)を作ることにした.

まずはPropertiesの仕様を見て,既存のload(InputStream inStream)がどのような形式を受け入れるのかを見る.

とりあえず一回目の走査でコメント行の除去や整形を行うことにした.具体的には以下の通り.

  1. 行頭からの複数の空白文字を除去
  2. 行自体が空白のみの場合は読み飛す
  3. 行頭が#ではじまる場合も読み飛す
  4. 行頭が!ではじまる場合も読み飛す
  5. 行末が\で終る場合は\を除去
  6. 行末が\で終わらない場合は改行を追加

これで整形済みの入力が得られるはずである.

あとはこれを一行ずつ対が入っているものとして理解していく.

ちなみに Pattern expression = Pattern.compile("^\\s*([^\\s:=]*)\\s*[:=]?\\s*([^:=]*)\\s*$"); という正規表現で前方参照のひとつめにキーが入り,ふたつめに値が入る.

あとはこれをthis.setProperty(key, value)してあげればおしまい.完成したものを見ると意外と簡単にできてる.

本日のPingbacks(全0件)