>  기사  >  Java  >  문자열 분할 중에 구분 기호를 유지할 수 있습니까?

문자열 분할 중에 구분 기호를 유지할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-25 02:00:02243검색

Can Delimiters be Retained during String Splitting?

문자열 분할 중 구분 기호 유지

구분 기호 집합으로 구분된 여러 줄 문자열로 작업할 때 일반적인 작업은 문자열을 여러 줄로 분할하는 것입니다. 개별 부품. 일반적으로 이러한 목적으로 String.split 메서드가 사용됩니다. 그러나 이 접근 방식은 결과에서 구분 기호를 생략합니다.

Lookahead 및 Lookbehind 사용

분할 중에 구분 기호를 유지하기 위해 정규식에서 Lookahead 및 LookBehind 개념을 사용할 수 있습니다. 활용하세요.

다음 코드를 고려하세요.

<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>

이 코드는 Lookahead 및 LookBehind를 사용하여 문자열을 검사합니다. 구체적으로 (?

마지막 줄은 on ((?<=;)|(?=;))에서는 문자열을 텍스트와 구분 기호 구성 요소로 효율적으로 분리합니다.

[a;, b;, c;, d]
[a, ;b, ;c, ;d]
[a, ;, b, ;, c, ;, d]

원하는 결과에서 세 번째 줄은 정확한 요구 사항을 캡처합니다. 여기서 각 텍스트 세그먼트 뒤에는 해당 구분 기호가 옵니다.

변수로 가독성 향상

정규식의 가독성을 높이려면 해당 기능을 나타내는 변수를 생성하는 것이 좋습니다. 예를 들어, 다음 코드는 WITH_DELIMITER 변수를 사용하여 구분 기호를 지정합니다.

<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.