파이프로 문자열을 분할하는 데 사용되는 Java Split() 메서드 기호("|")를 사용하면 다음 예에서 볼 수 있듯이 예상치 못한 결과가 나올 수 있습니다.
public static void main(String[] args) { String test = "A|B|C||D"; String[] result = test.split("|"); for (String s : result) { System.out.println(">"+s+"<"); } }
의도한 결과 대신 출력:
>A< >B< >C< >< >D<
코드 생성:
>< >A< >| >B< >| >C< >| >| >D<
왜 이런 일이 발생합니까?
문제는 Split() 메서드의 구문에 있습니다. 파이프 기호 "|"는 "OR" 연산자를 나타내는 정규식에서 특별한 의미를 갖습니다. 파이프 기호를 문자 그대로 구분 기호로 사용하려면 백슬래시()를 사용하여 이스케이프해야 합니다.
코드를 수정하려면 다음 접근 방식을 사용할 수 있습니다.
// Option 1: Escaping the pipe symbol String[] result = test.split("\|");
// Option 2: Utilizing Pattern.quote() import java.util.regex.Pattern; String[] result = test.split(Pattern.quote("|"));
파이프 기호를 이스케이프 처리하면 정규 표현식에서 파이프 기호의 특수한 상태가 억제되어 문자 그대로의 구분 기호로 해석될 수 있습니다.
위 내용은 '|'로 문자열을 분할할 때 Java의 `split()` 메서드가 실패하는 이유 어떻게 해결할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!