파이프로 구분 된 값으로 각 줄이있는 파일을 구문 분석하려고합니다. 분할 방법으로 파이프 구분 기호를 이스케이프하지 않으면 올바르게 작동하지 않지만 다음과 같이 파이프를 이스케이프 한 후에는 올바르게 작동했습니다.
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()
방법을 이스케이프 처리해야하는 이유를 설명해 주 시겠습니까?
답변
String.split
정규 표현식 인수가 필요합니다. 이스케이프 처리되지 않은 |
것은 “빈 문자열 또는 빈 문자열”을 의미하는 정규식으로 구문 분석됩니다. 이는 의미하지 않습니다.
답변
분할 할 해당 매개 변수의 구문 이 정규식이므로 ‘|’ OR의 특별한 의미와 ‘\ |’ 리터럴 ‘|’을 의미 문자열 “\\ |” 정규식을 의미합니다. ‘\ |’ 이는 문자 ‘|’와 정확히 일치 함을 의미합니다.
답변
당신은 단순히 이것을 할 수 있습니다 :
String[] arrayString = yourString.split("\\|");