String 문자열을 자르는(나누는) 방법을 알아보자.
String 클래스에서 지원하는 3가지 메서드를 사용해볼 것이다.
● String.substring()
● String.split()
● String.charAt()
substring()
String의 인덱스를 기준으로 문자열을 잘라서 리턴하며,
다음과 같이 2가지 사용법이 존재한다.
문법)
// beginIndex 부터 자름
String.substring(int beginIndex);
// beginIndex 부터 endIndex 까지 자름
String.substring(int beginIndex, int endIndex);
ex)
String str = "Oscar";
// str의 인덱스 1번 부터 자르고 출력
System.out.println("index: 1 ~ = " + str.substring(1));
// str의 인덱스 1번 부터 3번 '이전' 까지 자르고 출력
System.out.println("index: 1 ~ 2 = " + str.substring(1,3));
출력 결과)
String.substring(beginIndex, endIndex) 에서
endIndex 부분이 포함되지 않는다는 것만 명시하면 된다.
split()
인자값의 String을 기준으로 문자열을 잘라서 배열로 리턴한다.
문법)
String[] array = String.split();
ex)
String str = "Oscar";
// str을 1개의 문자로 나누어 배열에 초기화
String[] array = str.split("");
// 배열 출력
System.out.println(Arrays.toString(array));
출력 결과)
split() 인자값에 들어간 "" 는 보이는대로 빈 값이다.
빈 값이 들어가서 문자열을 1글자씩 잘랐다고 생각하면 된다.
ex2)
String str = "Os@car";
// str을 "@" 문자로 나누어 배열에 초기화
String[] array = str.split("@");
// 배열 출력
System.out.println(Arrays.toString(array));
출력 결과)
"@" 를 기준으로 문자열이 잘려서 배열에 초기화된 것을 확인할 수 있다.
charAt()
인자값의 인덱스에 해당하는 문자를 리턴한다.
문법)
String.charAt(index);
ex)
String str = "Oscar";
// str의 인덱스 2번 문자 출력
System.out.println(str.charAt(2));
출력 결과)
str의 2번째 인덱스인 'c'가 출력되었다.
간단한 문제를 풀며 응용해보자
위와 같은 3가지 방식의 문자열 자르기를 통해
다음과 같은 문제를 해결할 수 있다.
문자열 str과 정수 n이 주어질 때,
str의 n번째 인덱스부터 str의 마지막 문자까지 출력하시오.
String str = "Cute Oscar";
int n = 5;
// substring()
System.out.println("substring() : " + str.substring(n));
// split()
String answer1 = "";
String[] array = str.split("");
for (int i = 0; i < str.length(); i++) {
if (i >= n) {
answer1 += array[i];
}
}
System.out.println("split() : " + answer1);
// charAt()
String answer2 = "";
for (int i = 0; i < str.length(); i++) {
if (i >= n) {
answer2 += str.charAt(i);
}
}
System.out.println("charAt() : " + answer2);
출력 결과)
결과를 보다시피 3가지 방식 모두 "Cute "가 걸러지고 "Oscar"만 남았다...
문자열을 자르는 방식은 더 많지만,
위 3가지가 비교적 기초적이고 단순한 방식이라고 생각한다.
본인 주변 개발자들은 선호하는 스타일이 제각각이다.
각자 입맛대로 골라 쓰기 바란다.
'Java (자바)' 카테고리의 다른 글
[Java] 날짜 데이터를 시스템 시간으로 포맷하기 / 날짜 더하기 · 빼기 (0) | 2024.02.03 |
---|---|
[Java] String / StringBuffer / StringBuilder (0) | 2024.02.02 |
[Java] 문자열(String) 알파벳 대,소문자 변환 / 알파벳 대,소문자 확인 (0) | 2023.12.31 |
[Java] 배열(Array) 정렬, ArrayList 정렬 / 오름차순, 내림차순 / 알파벳 순서대로 (2) | 2023.12.29 |
[Java] 현재 날짜, 시간 구하기 / Date / Calendar / System 클래스 맛보기 (2) | 2023.04.13 |