자바에서 문자열을 분할할 때 split() 메소드, StringTokenizer 클래스를 사용하는 것이 대표적인 방법입니다. 이 글에서는 split() 메소드를 사용하는 방법을 설명 합니다.

목차
split() 메소드 구분자 여러개 처리
split() 메소드는 Java에서 String 클래스에 포함된 메소드 입니다. 정규 표현식을 기반으로 문자열을 분할하는 데 사용됩니다. 정규 표현식에 따라 문자열을 여러 부분으로 나누고, 그 결과를 배열로 반환합니다.
public class SplitExample {
public static void main(String[] args) {
String inputString = "apple,orange;banana;mangi";
String[] result = inputString.split("[,;]");
for (String token : result) {
System.out.println(token);
}
}
}
----------결과-------------------------------------------------
apple
orange
banana
mango간단한 사용 예제 코드를 작성 했습니다. 파라메터로 입력한 split(“[,;]”) 코드는 콤마(,) 또는 세미콜론(;)을 기준으로 문자열을 나누는 정규식 입니다.
public class SplitExample {
public static void main(String[] args) {
String inputString = "apple,orange;banana,mango";
String[] result = inputString.split(",|;");
for (String token : result) {
System.out.println(token);
}
}
}
----------결과-------------------------------------------------
apple
orange
banana
mango정규식에서 or를 의미하는 ‘|’를 사용해도 동일한 결과를 얻을 수 있습니다.
사용 시 주의 사항. 이스케이프 처리
정규 표현식을 사용하므로 특수문자를 사용할 때 이스케이프(\\) 처리가 필요합니다.
public class SplitExample {
public static void main(String[] args) {
String inputString = "apple.orange.banana.mango";
String[] result = inputString.split("\\.");
for (String token : result) {
System.out.println(token);
}
}
}
----------결과-------------------------------------------------
apple
orange
banana
mango위의 예제에서는 마침표(.)에 이스케이프 처리를 하지 않으면 result 배열에는 아무 값도 들어가지 않게 됩니다. 마침표(.)가 정규식에서 ‘어떤 문자 하나’를 의미하기 때문에 이스케이프 처리 없이는 원하는 결과를 만들 수 없습니다.
public class SplitExample {
public static void main(String[] args) {
String inputString = "apple|orange|banana|mango";
String[] result = inputString.split("\\|");
for (String token : result) {
System.out.println(token);
}
}
}
----------결과-------------------------------------------------
apple
orange
banana
mangopublic class SplitExample {
public static void main(String[] args) {
String inputString = "apple|orange|banana|mango";
String[] result = inputString.split("|");
for (String token : result) {
System.out.println(token);
}
}
}
----------결과-------------------------------------------------
a
p
p
l
e
|
o
r
a
n
g
e
|
b
n
a
n
a
|
m
a
n
g
o파이프(|) 문자를 구분자로 사용할 때 이스케이프 처리를 하지 않으면, 정규 표현식에서 OR연산자로 처리되어 전혀 엉뚱한 결과를 얻게 됩니다.
정규식에서 사용되는 특수문자를 구분자로 문자열을 분할하는 경우, 이스케이프 처리를 꼭 염두 해 두어야 합니다.



