パイプ文字|でsplitする

今回は、文字列をパイプ文字|で分割処理する方法について述べます。パイプ文字などの正規表現に使われる記号は、ほかの文字と同様にして扱うと期待通りの結果が得られないことがあります。 例として、次のコードについて考えます。

      separateValue = value.split("|");

ただし、ValueはString, separateValueはString[]型で定義されているとします。 いま、Valueに”和歌山県”という漢字4個の文字列が入っているとします。パイプ文字は含まれていないので、separateValueには要素数一つ、”和歌山県”という文字列がそのまま入ることが期待されます。 しかし実際は、separateValueには要素数4つの”和”、”歌”、”山”、”県”が格納されます。 これを防ぐには、パイプ文字の前にバックスラッシュを2つ置きます。(エスケープというようです) 改善したコードを次に示します。

      separateValue = value.split("\\|");

こうすることで期待通りの結果、”和歌山県”が得られます。 もちろん、本来の目的であるパイプ文字を含んだ対象についても期待通りの結果を得ることが出来ます。

特殊な使い方をされる文字には注意して(疑って)プログラムを書こう、と覚えておけば良いでしょうか。