2월 13, 2024

[Java] substring 총정리/ string index

 Java에서 string의 일부를 보기 위해서는 substring이라는 메서드를 사용해주게 됩니다. 

substring은 string이 주어질 경우, string에서 index를 기준으로 일부를 반환하는 메서드인데요,

이를 위해서는 Java string의 index가 어떻게 계산되는지부터 살펴보아야 합니다.


만약 "AppleBanana" 라는 string이 있다고 해봅시다. 

여기서 A는 0번째 index를 가리키고 하나씩 index가 증가하면서 마지막 a는 10번째 index를 가리킨다고 할 수 있어요. 

가장 첫 번째 문자가 0번째 index라는 것을 기억하는 것이 가장 중요합니다. 

 

그러면 이 경우 substring을 어떻게 적용할 수 있을까요?

substring의 메서드 사용법에는 두 가지가 있습니다. String str이 있다면

1. str.substring(index 숫자) 

2. str.substring(시작index, (끝+1)index)

이런 두가지 기본 형태로 사용할 수 있습니다. 

 

그럼 각각을 어떻게 활용하는지 더 자세히 살펴볼게요.

 



1. index에 있는 문자를 반환하는 경우

String str="Homework";
System.out.println(str.substring(2));

 

위와 같은 Java code가 존재할 때 해당 출력값은 무엇이 될까요?

 

바로 m이 출력될 것입니다. 위에서도 언급했듯이 java index는 0부터 시작하기 때문에 H가 0번째 index, o가 1번째 index, m이 2번째 index가 되는 것입니다. 그래서 2번째 substring에 해당하는 문자인 m을 출력해주는 것이죠. 

 

이렇게 substring의 인자가 한 개만 주어질 경우에는 index에 있는 문자가 return됩니다.



2. start index와 end index가 명시되어 있는 경우 

1번보다 더 많이 사용되는 경우인데요, 바로 substring에 인자값을 두 개를 전달하는 겁니다. 

그럴 경우에 첫번째 parameter로는 시작 index를 주고, 두번째 parameter로는 마지막 index보다 하나 큰 값을 주게 됩니다. 

 

다시 말하면, 

만약

System.out.println(str.substring(0, 4));

위와 같은 코드가 있다면 0번째 index, 1번째 index, 2번째 index, 3번째 index의 문자를 print해주라는 것이고, 마지막 end index라고 표시된 4번째 index의 문자는 print에 해당되지 않는다는 것이죠.

 

즉 start index는 포함되는 반면, 두번째 parameter로 주어진 값의 index는 포함되지 않는 다는 것이 중요한 성질입니다!! 

이것을 모르고 가끔 substring을 의도와 다르게 사용하는 경우가 있습니다. 

 

String str="Apple";
System.out.println(0,3);


위와 같은 코드에서는 출력값이 따라서 App가 될 것입니다. 

왜냐하면 3번째 index인 'l'은 출력되지 않고 그 전 index의 문자까지만 출력이 되기 때문이죠.