パイプで区切られた値を持つ各行を持つファイルを解析しようとしています。 splitメソッドでパイプ区切り文字をエスケープしなかった場合、正しく機能しませんでしたが、以下のようにパイプをエスケープした後は正常に機能しました。String.splitでパイプ区切り文字をエスケープする必要があるのはなぜですか?
private ArrayList<String> parseLine(String line) {
ArrayList<String> list = new ArrayList<String>();
String[] list_str = line.split("\\|"); // note the escape "\\" here
System.out.println(list_str.length);
System.out.println(line);
for(String s:list_str) {
list.add(s);
System.out.print(s+ "|");
}
return list;
}
パイプ文字がsplit()
方法のためにエスケープする必要がありますなぜ誰かが説明していただけますか?
答えは以下の答え、「なぜ、」しかし、あなたはリテラル文字列に一致するようにしようとしている場合だけFYI、あなたはまた、([Pattern.quote]で見えるかもしれませんhttp://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#quote(java.lang.String))。それは 'String'を受け取り、入力にマッチする正規表現' String'を返します(つまり、あなたのためにすべてのエスケープ処理を行います)。 – yshavit
+1 for 'Pattern.quote' – redDevil