각 줄에 파이프 구분 값이있는 파일을 구문 분석하려고합니다. 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()
방법에 대한 탈출해야하는 이유를 설명시겠습니까?
답은 아래의 대답은 "왜"하지만 당신은 리터럴 문자열과 일치하려는 경우 단지 참고로, 당신은 또한 ([Pattern.quote]에서 볼 수있다 http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#quote(java.lang.String)). 그것은'String'을 취하고 입력과 일치하는 정규 표현식'String'을 반환합니다 (즉, 모든 이스케이프를 처리합니다). – yshavit
+1 'Pattern.quote' – redDevil