2024 2회차 정보처리기사 실기 시험 20번 문제에 나온 Java split 메서드 !
주어진 기준값으로 문자열을 분할하는건 알겠는데..
주어진 기준값은 문자열 배열에 들어가게 되는건지 아닌지 헷갈려서 결국 그 문제는 틀렸다 🤪
그랬는데 시험 다 보고 나니까 실무 중에 쓸 일이 있어서 다시 보는 김에 정리해본다.
👨💻split() 메서드란?
자바의 String 클래스에 포함된 메서드로, 문자열을 특정 구분자(Delimiter)나 정규 표현식을 기준으로 분할하여 배열로 반환해주는 메서드
public String[] split(String regex)
public String[] split(String regex, int limit)
regex에는 분할의 기준이 될 문자 또는 정규표현식을 넣어준다.
limit은 선택사항으로, limit이 양수일 경우 결과 배열의 크기는 최대 limit 요소를 가지며, 음수일 경우 제한 없이 모든 분할 결과를 포함한다.
●예시 1) 특정 문자를 이용하여 분할(2024 2회차 정처기 실기 기출 문제 복원)
(*실제 문제와 약간 다를 수는 있음)
public class Main {
public static String split_and_get_kth_value(String input_str, int k) {
String[] split_result = input_str.split("T"); // 'T'로 문자열 분할
return split_result[k]; // k번째 요소 반환
}
public static void main(String[] args) {
String input_str = "ITISTESTSTRING";
int k = 3;
// 메서드 호출
String result = split_and_get_kth_value(input_str, k);
// 결과 출력
System.out.println(result); //출력 결과는 S
// 배열을 문자열로 변환하여 출력(이 부분은 실제 문제에 없었음)
System.out.println("result = " + Arrays.toString(resultArray));
}
}
▷ result = [I, IS, ES, S, RING];
배열 출력 결과를 보면 구분 기준이 된 'T'는 제외하고 분할된 나머지 문자열들만 배열에 담겼다.
그런데 여기서 정규 표현식에서 사용하는 특수 문자(|, ., *, + 등)를 기준으로 문자열을 분할하려고 하면 결과가 달라진다.
●예시 2) 정규표현식에서 사용하는 특수문자 (|, ., *, + 등) 을 이용하여 분할
public class Main {
public static void main(String[] args) {
String str = "1|2|3";
String[] result = str.split("|");
// 결과 출력
for (String s : result) {
System.out.print("result = "+ Arrays.toString(result));
}
}
}
▷ result = [1, |, 2, |, 3];
특수문자를 사용한 결과는 구분 기준이 된 "|" 도 배열에 담긴다. 그럼 이 때 특수문자는 배열에 담고 싶지 않다면?
이스케이프 처리를 해주면 된다.
●예시 3) 정규표현식에서 사용하는 특수문자 (|, ., *, + 등) 을 이스케이프 처리하여 분할
public class Main {
public static void main(String[] args) {
String str = "1|2|3";
// '|'를 기준으로 문자열을 분할하려면 '\\|'로 이스케이프 처리
String[] result = str.split("\\|");
// 결과 출력
for (String s : result) {
System.out.println("result = " + Arrays.toString(result));
}
}
}
▷ result = [1, 2, 3];
특수문자 "|" 를 이스케이프 처리하니, 배열에 "|"는 없는 것을 확인할 수 있다.
'Backend > Java' 카테고리의 다른 글
[Java]StringBuilder 클래스 사용법💪 (0) | 2025.04.09 |
---|---|
[Java] 클래스 파일 -> 자바 파일로 디컴파일 하는 법(jad decomplier 사용) (2) | 2024.09.24 |
[Java]중첩 클래스(Nested Class) (2) | 2024.02.24 |
[Java] throws와 throw의 차이 (0) | 2024.02.23 |
[Java]런타임 클래스(Runtime Class) (0) | 2024.01.25 |