Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 특정 문자열(고정 문자 시퀀스)을 기준으로 문자열을 분할하는 방법

Java의 String 클래스가 제공하는 split() 메서드는 구분자(delimiter)를 문자열 형태로 전달받아, 현재 문자열을 해당 구분자를 기준으로 잘라낸 뒤 결과 문자열들을 배열 형태로 반환합니다. 만약 대상 문자열에 지정한 구분자가 존재하지 않는다면, 이 메서드는 원본 문자열 하나만 담긴 배열을 반환합니다.

예를 들어, 공백 한 칸(" ")을 구분자로 전달하여 문자열을 분할하면, 이 메서드는 두 공백 사이의 단어를 하나의 토큰으로 간주하고, 현재 문자열에 포함된 단어들(공백 사이의 내용)로 구성된 배열을 반환합니다.

반대로 문자열에 지정된 구분자가 없다면, 전체 문자열 하나를 요소로 갖는 배열이 그대로 반환됩니다.

고정 문자 시퀀스를 기준으로 문자열 분할하기

특정 문자열이 나타날 때마다 원본 문자열을 분할하여 배열로 만들려면 다음 순서대로 진행하면 됩니다.

  • 원본 문자열을 준비(또는 읽어옵니다).

  • 구분자로 사용할 문자열을 인수로 전달하며 split() 메서드를 호출합니다.

  • 반환된 배열을 출력합니다.

예제

다음 Java 프로그램은 파일의 내용을 문자열로 읽어 들인 후, split() 메서드에 다른 문자열(" to ")을 구분자로 전달하여 분할합니다.

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Scanner;
public class SplitExample {
    public static void main(String args[]) throws FileNotFoundException {
        Scanner sc = new Scanner(new File("D:\\sample.txt"));
        StringBuffer sb = new StringBuffer();
        String input = new String();
        while (sc.hasNextLine()) {
            input = sc.nextLine();
            sb.append(input);
        }
        String source = sb.toString();
        String result[] = source.split(" to ");
        System.out.print(Arrays.toString(result));
    }
}

실행 결과

[Tutorials Point originated from the idea that there exists a class of readers who respond better,
on-line content and prefer, learn new skills at their own pace from the comforts of their drawing rooms.]

위 예제에서 파일 전체 내용이 하나의 문자열로 결합된 뒤, " to "라는 고정 문자 시퀀스가 등장하는 위치마다 문자열이 잘려 배열로 반환되는 것을 확인할 수 있습니다. 참고로 split() 메서드의 인수는 정규 표현식으로 해석되므로, 메타 문자(. * + ? 등)를 구분자로 사용할 경우 역슬래시(\\)로 이스케이프 처리해야 한다는 점도 함께 기억해 두면 좋습니다.