구분자를 보존한 상태에서 문자열 분할
여러 줄 문자열로 작업할 때 구분자를 사용하여 구성 요소 부분으로 분할해야 하는 경우가 많습니다. 그러나 String.split()의 기본 동작은 구분 기호를 버리고 추출된 텍스트만 남깁니다.
문제:
다음 문자열을 고려하십시오.
(Text1)(DelimiterA)(Text2)(DelimiterC)(Text3)(DelimiterB)(Text4)
String.split()을 사용하여 이 문자열을 분할하면 다음이 생성됩니다.
원하는 출력:
구분 기호를 유지하고 이에 따라 문자열을 분할하려면 구분 기호를 유지하는 접근 방식이 필요합니다.
해결책 :
JDK는 미리보기 및 뒤돌아보기 정규 표현식(regex) 기능을 사용하여 이를 달성하는 방법을 제공합니다. 작동 방식은 다음과 같습니다.
<code class="java">System.out.println(Arrays.toString("a;b;c;d".split("(?<=;)"))); System.out.println(Arrays.toString("a;b;c;d".split("(?=;)"))); System.out.println(Arrays.toString("a;b;c;d".split("((?<;=;)|(?=;))")));</code>
결과는 다음과 같습니다.
마지막 출력은 원하는 형식과 일치합니다. 각 구분 기호는 유지되고 문자열은 별도의 부분으로 분할됩니다.
정규식 설명:
이러한 패턴을 결합하여 모든 구분 기호에서 문자열을 효과적으로 분할합니다. 구분 기호 자체를 출력의 일부로 유지합니다.
가독성 향상:
가독성을 높이려면 다음과 같이 명명된 정규식을 사용하는 것이 좋습니다.
<code class="java">static public final String WITH_DELIMITER = "((?<=%1$s)|(?=%1$s))"; public void someMethod() { final String[] aEach = "a;b;c;d".split(String.format(WITH_DELIMITER, ";")); ... }</code>
이렇게 하면 정규식의 설명이 더 명확해지고 유지 관리가 더 쉬워집니다.
위 내용은 구분 기호를 유지하면서 문자열을 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!