Java (자바)

[Java] 문자열 String 자르기 / 문자열 String 나누기 / substring() / split() / charAt()

Oscar:) 2024. 1. 2. 16:57

 

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가지가 비교적 기초적이고 단순한 방식이라고 생각한다.

 

본인 주변 개발자들은 선호하는 스타일이 제각각이다.

각자 입맛대로 골라 쓰기 바란다.