2014-10-04 3 views

답변

15

, |alternation에 사용되는 예약 문자입니다 :

이 문제를 일으키는 내 라인입니다. 그것을 탈출해야합니다 :

String out = string.split("\\|"); 

두 개의 백 슬래시를 사용했음을 유의하십시오. 이것은 첫 번째 문자열이 자바 문자열의 두 번째 문자열을 이스케이프하므로 정규식 엔진에 전달 된 문자열이 \|이기 때문입니다.

+2

감사합니다. 하나는 백 슬래시로 이스케이프하지만 Android Studio에서는 이스케이프가 필요 없다고 생각하여 불법 탈출 캐릭터라고했습니다. 감사! – Yharoomanner

+4

명확히하기 위해,'|'문자는 빈 문자열을 의미하지 않습니다. "또는"을 의미합니다. 이것은 질문의 정규식이 "빈 문자열 또는 빈 문자열"로 변환된다는 것을 의미합니다. – yshavit

+0

@Yharoomanner 이중 백 슬래시는 입력 문자열의 백 슬래시 문자를 나타냅니다. 이것은 정규 표현식 파서에 문자열 "\ |"로 전달됩니다. 세로 막대 문자를 나타냅니다. –

1

나는이 이미 위의 링크에 대한 답변의 요약

Java split string to array에 대답했다 생각 :

String[] array = values.split("\\|",-1); 

이 때문에 : 호출하여 것처럼

이 방법은 작동 주어진 표현식과 limit 인수가 0 인 두 개의 인수 split 메소드. 따라서 후행 빈 문자열은 결과 배열에 포함되지 않습니다.

1

split|이 특수 문자 인 정규 표현식을 사용합니다. 백 슬래시로 이스케이프 처리해야합니다. 하지만 백 슬래시는 자바 문자열의 특수 문자이므로 이스케이프 처리해야합니다.

myString.split("\\|")