to.tetramorph.starbase.util
クラス StringEscape

java.lang.Object
  上位を拡張 to.tetramorph.starbase.util.StringEscape

public class StringEscape
extends Object

文字列中の改行"\n"とイコール"="をエスケープ/アンエスケープ、およびsplitする。 '='をエスケープするとは、"\="というように、前に"\"を挿入すること。
"\n"なら"\\n"とする。"\"の文字がエスケープされるときは"\\"となる。 このようにしてエスケープされていない"=","\n"と区別がつくようにする。
splitとはエスケープされた文字列中から、エスケープされていない"\n","="を 見つけて、それをセパレータとしてトークンに分解する。

セパレータが"="としたとき、
"="という文字列をsplitすると、"",""という二つのトークンに分かれる。
"=Hoge"なら"","Hoge"に分かれる。
"Hoge="なら"Hoge",""に分かれる。
"Hoge=Payo"なら"Hoge","Payo"に分かれる。
""なら、""のまま。
"Hoge"なら"Hoge"のまま。

 このクラスはDBのSPECIFIC_PROPERTIES表などにプロパティを書き出すために書かれた。 最初は一行で表現できるプロパティを保管することしか想定していなかったが、 長い設定ソースコードなどを保管する必要が出たためエスケープが必要になった。
 最初、プロパティの保管は、次のようにキーと値を連結して一本の文字列にして、 それを表に登録していた。

 key1=value1\n
 key2=value2\n
 
 DBから上記文字列を取り出したら、まず'\n'でsplitして各行に分割。 さらに'='でsplitしてキーと値に分割し、Propertiesにセットしていた。
 ところが、この方法だと、valueやkeyに改行やイコールが含まれていた場合、 あとから元のプロパティに復元するときに困る。'\n'で分割しても、それは長い 改行入りテキスト文字列の途中で分割してしまうことも起きる。
だから双方の文字列に含まれるイコールと改行コードをエスケープし、 真の'='と'\n'と区別がつくようにする。


コンストラクタの概要
StringEscape()
           
 
メソッドの概要
static List<String> enterSplit(String escstr)
          エスケープされた文字列中からエスケープされていない'\n'キャラをみつけて、 それをセパレータとして文字列をトークンに分解して返す。
static List<String> equalSplit(String escstr)
          エスケープされた文字列中からエスケープされていない'='キャラをみつけて、 それをセパレータとして文字列をトークンに分解して返す。
static String escape(String str)
          エスケープ処理をする。
static String unescape(String escstr)
          escape()でエスケープしたものを元に戻して返す。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

StringEscape

public StringEscape()
メソッドの詳細

escape

public static String escape(String str)
エスケープ処理をする。 "\n","="を"\\\n","\="に置換する。


unescape

public static String unescape(String escstr)
escape()でエスケープしたものを元に戻して返す。


equalSplit

public static List<String> equalSplit(String escstr)
エスケープされた文字列中からエスケープされていない'='キャラをみつけて、 それをセパレータとして文字列をトークンに分解して返す。

パラメータ:
escstr - escape()を使ってエスケープされた文字列。
戻り値:
トークンに分解された文字列のリスト。

enterSplit

public static List<String> enterSplit(String escstr)
エスケープされた文字列中からエスケープされていない'\n'キャラをみつけて、 それをセパレータとして文字列をトークンに分解して返す。

パラメータ:
escstr - escape()を使ってエスケープされた文字列。
戻り値:
トークンに分解された文字列のリスト。