오늘개발일지

[Java] substring 문자열 자르기 본문

Programming Language/Java

[Java] substring 문자열 자르기

chlgksdbs 2023. 9. 23. 12:06

substring

이번 포스팅은 자바 substring 함수로 String 문자열 자르기 방법에 대해 알아보겠습니다.
우선, 문자열 자르기에 대해 알아보기에 앞서, Java 11 공식 문서에 있는 substring 메서드에 대해 알아보겠습니다.

 

  • substring(int beginIndex) : 매개변수가 시작 인덱스 1개
  • substring(int beginIndex, int endIndex) : 매개변수가 시작 인덱스, 끝 인덱스 2개

String substring(int beginIndex)

beginIndex부터 끝 인덱스까지 문자열(String)을 반환합니다.

 

특정 문자열에 대해, 지정한 시작 범위부터 끝 범위까지의 문자열 자르기를 수행하고 싶을 때, 다음과 같은 함수를 사용하여 코드를 작성합니다.

 

문자열 "abcdefghijk"에 대한 substring(3) java code

다음과 같은 코드를 작성했을 때, 아래와 같은 결과가 출력됩니다.

 

문자열 "abcdefghijk"에 대한 substring(3) result

 

문자열의 인덱스가 0부터 시작한다고 고려했을 때, 3의 자리에 위치한 d부터 시작하여 문자열 끝까지 문자열 자르기가 수행됩니다. 이는 아래 표와 같이 동작합니다.

 

index 0 1 2 3 4 5 6 7 8 9 10
String a b c d e f g h i j k

 

이처럼, 특정 범위를 시작으로 문자열의 끝 부분까지 문자열 자르기를 수행하고 싶을 때는 다음과 같이 하나의 시작 매개변수로 문자열 자르기를 수행할 수 있습니다. 하지만 문자열의 끝 부분이 아닌, 특정 부분까지만 자르고 싶을 때는 어떡할까요? 이는 다음과 같은 substring 함수를 활용할 수 있습니다.


String substring(int beginIndex, int endIndex)
beginIndex부터 endIndex - 1까지 문자열(String)을 반환합니다

 

특정 문자열에 대해, 지정한 시작 범위부터 지정한 끝 범위까지의 문자열 자르기를 수행하고 싶을 때, 다음과 같은 함수를 사용하여 코드를 작성합니다.

 

문자열 "abcdefghijk"에 대한 substring(3, 8) java code

 

다음과 같은 코드를 작성했을 때, 아래와 같은 결과가 출력됩니다.

 

문자열 "abcdefghijk"에 대한 substring(3, 8) result

 

문자열의 인덱스가 0부터 시작한다고 고려했을 때, 3의 자리에 위치한 d부터 시작하여 8의 자리에 위치한 i까지 문자열 자르기가 수행됩니다. 하지만 실제 출력되는 문자열은 인덱스 8에 위치한 i가 아닌, 인덱스 7에 위치한 h까지 출력됩니다. 이러한 동작 원리는 아래 표를 통해 확인할 수 있습니다.

 

index 0 1 2 3 4 5 6 7 8 9 10
String a b c d e f g h i j k

 

다음 표와 같이, beginIndex에 3을 넣고 endIndex에 8을 넣었지만, 실제는 3에서 7인덱스까지의 문자열이 출력되는 것일 확인할 수 있습니다. 이때 헷갈리지 않는 꿀팁은 시작 인덱스는 고정이되, 끝 인덱스를 생각할 때 내가 출력하고 싶은 문자열의 개수만큼을 생각하는 것입니다. 예를 들어, 인덱스 3인 'd'부터 5개를 출력하고 싶다면, 3 + 5인 8로 endIndex를 설정하는 것입니다.

 

이번 포스팅에서는 substring 함수로 String 문자열 자르기 방법에 대해 알아보았습니다. 이번 블로그 글은 간혹 코딩 테스트에 나오는 사소한 메서드에 시간을 투자하면 안되겠다는 생각으로 복습을 진행하며 포스팅 중입니다. 다음 포스팅은 BFS / DFS 알고리즘에 대해 공부하고 문제 풀이를 통한 예시를 작성하도록 하겠습니다.

'Programming Language > Java' 카테고리의 다른 글

[Java] HashMap 키(Key) / 값(Value) 기준 정렬  (1) 2023.05.28
[Java] EOF(End of File) 처리  (0) 2023.04.27