itsource

String.split에서 파이프 딜리미터를 이스케이프해야 하는 이유는 무엇입니까?

mycopycode 2022. 9. 5. 23:17
반응형

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

반응형