文字列を置換したい、でも制御文字だからできないそんなとき
Windowsでは、ファイルのパスを「C:\hoge\bar」などのように表します
しかし他のOSでは「/hoge/bar」などのように表します
JavaのいいところはどんなOSでも動くところ、でも気をつけないとこの記号の違いでファイル操作がうまくいきません
Windows限定のソフトなら、Fileクラスで\記号のまま扱えるのですが、配慮するなら記号を置換してURIクラスとかで操作する必要が出てきます
僕みたいなニワカはmac◯ね、iTunes少しは黙れ、とかUNIX系統は自分で作ればいいだろ、キモいソフト名でもつけて、など酷い偏見を抱きがちですが
このときニワカな僕だと最初にreplaceAll("\\","/");で余裕だと考え実行するのですがエラーがでてしまいます
こういう文字列を検索する系のメソッドは正規表現を用いるので\記号がそれにひっかかってしまうらしいです
そこで文字列をchar配列にして、一文字ずつ\が無いか探し、あれば/に置き換え、最後に配列を文字列に戻すメソッドを作ります
public String tiltSlash(String src) { char[] c=src.toCharArray(); for (int i = 0; i < c.length; i++) { if (c[i]=='\\') { c[i]='/'; } } return String.copyValueOf(c); }
気をつけるのは最後の行、NetBeansでサジェストされてc.toStringを使いたくなりますがこれだと意図しない文字列が返ってきます
ググるとすとりんぐばっふぁーとか小難しいのを使った長いメソッドが出てきますがこれで充分だと思います