Java의 String 클래스가 제공하는 split() 메서드는 구분 기호(delimiter)를 인수로 받아, 현재 문자열을 해당 구분 기호를 기준으로 여러 개의 작은 문자열로 나눈 뒤 그 결과를 문자열 배열(String[]) 형태로 반환합니다.
만약 문자열에 지정한 구분 기호가 존재하지 않는다면, 이 메서드는 원본 문자열 전체를 유일한 요소로 가지는 배열을 반환합니다.
공백을 구분 기호로 문자열 분할하기
공백 문자를 구분 기호로 사용하여 하나의 문자열을 문자열 배열로 나누려면 다음 단계를 따르면 됩니다.
- 분할할 원본 문자열을 준비하거나 읽어옵니다.
- split() 메서드를 호출하면서 구분 기호로 공백(" ")을 전달합니다.
- 반환된 결과 배열을 출력하거나 활용합니다.
예제 코드
다음 Java 프로그램은 파일의 내용을 문자열로 읽어 들인 후, split() 메서드에 공백을 구분 기호로 전달하여 문자열을 분할합니다.
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(" ");
for(int i = 0; i < result.length; i++) {
System.out.println(result[i]);
}
}
}실행 결과
파일에 "Hello how are you"라는 문장이 저장되어 있다면, 공백을 기준으로 분할되어 각 단어가 별도의 배열 요소로 출력됩니다.
Hello how are you
참고 사항
연속된 여러 개의 공백이나 탭 등 모든 종류의 공백 문자를 처리하려면 정규 표현식인 \\s+를 구분 기호로 사용하는 것이 좋습니다. 예를 들어 source.split("\\s+")와 같이 호출하면 공백의 개수나 종류와 관계없이 안정적으로 문자열을 분할할 수 있습니다.