구분 기호 "|"로 문자열을 분할하려고하면 모든 단일 문자가 분할 된 것처럼 보입니다. 정규식에서Java - 모든 문자로 문자열 분할
String out = myString.split("|");
구분 기호 "|"로 문자열을 분할하려고하면 모든 단일 문자가 분할 된 것처럼 보입니다. 정규식에서Java - 모든 문자로 문자열 분할
String out = myString.split("|");
, |
이 alternation에 사용되는 예약 문자입니다 :
이 문제를 일으키는 내 라인입니다. 그것을 탈출해야합니다 :
String out = string.split("\\|");
두 개의 백 슬래시를 사용했음을 유의하십시오. 이것은 첫 번째 문자열이 자바 문자열의 두 번째 문자열을 이스케이프하므로 정규식 엔진에 전달 된 문자열이 \|
이기 때문입니다.
나는이 이미 위의 링크에 대한 답변의 요약
Java split string to array에 대답했다 생각 :
String[] array = values.split("\\|",-1);
이 때문에 : 호출하여 것처럼
이 방법은 작동 주어진 표현식과
limit
인수가 0 인 두 개의 인수split
메소드. 따라서 후행 빈 문자열은 결과 배열에 포함되지 않습니다.
split
은 |
이 특수 문자 인 정규 표현식을 사용합니다. 백 슬래시로 이스케이프 처리해야합니다. 하지만 백 슬래시는 자바 문자열의 특수 문자이므로 이스케이프 처리해야합니다.
myString.split("\\|")
감사합니다. 하나는 백 슬래시로 이스케이프하지만 Android Studio에서는 이스케이프가 필요 없다고 생각하여 불법 탈출 캐릭터라고했습니다. 감사! – Yharoomanner
명확히하기 위해,'|'문자는 빈 문자열을 의미하지 않습니다. "또는"을 의미합니다. 이것은 질문의 정규식이 "빈 문자열 또는 빈 문자열"로 변환된다는 것을 의미합니다. – yshavit
@Yharoomanner 이중 백 슬래시는 입력 문자열의 백 슬래시 문자를 나타냅니다. 이것은 정규 표현식 파서에 문자열 "\ |"로 전달됩니다. 세로 막대 문자를 나타냅니다. –