반응형
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()
방법?
String.split
는 정규 표현 인수를 요구합니다.탈출하지 않은 사람|
는 "빈 문자열 또는 빈 문자열"을 의미하는 regex로 구문 분석됩니다.이것은 당신이 의미하는 바가 아닙니다.
분할하는 파라미터의 구문은 정규 표현이기 때문에'|'
OR이라는 특별한 의미를 가지며,'\|'
리터럴을 의미합니다.'|'
그래서 끈은"\\|"
정규 표현을 의미합니다.'\|'
그 말은 그 캐릭터가 정확히 일치한다는 뜻이죠'|'
.
간단하게 다음과 같이 할 수 있습니다.
String[] arrayString = yourString.split("\\|");
언급URL : https://stackoverflow.com/questions/9808689/why-does-string-split-need-pipe-delimiter-to-be-escaped
반응형
'itsource' 카테고리의 다른 글
GRANT가 MySQL에서 작동하지 않는 이유는 무엇입니까? (0) | 2022.09.05 |
---|---|
모듈의 모든 기능을 나열하는 방법은 무엇입니까? (0) | 2022.09.05 |
수천 개의 동적 컬럼이 있으면 성능 저하가 있습니까? (0) | 2022.09.05 |
MariaDB - 테이블에 인덱스를 추가해야 합니까? (0) | 2022.09.05 |
배열에서 일치하거나 가장 가까운 값 찾기 (0) | 2022.09.05 |