String 다루기(2) - substring(), indexOf()

Posted by ITPangPang
2016. 10. 22. 14:22 안드로이드(android)/String 다루기


String 다루기(2)

substring(), indexOf()



ㆍ 이전글에서 indexOf에 대해 간단하게 알아보았습니다


ㆍ 이번에는 substring()의 사용방법과 indexOf와 함께

    사용하는 방법에 대해 알아보도록 하겠습니다.



일단 substring()에 대해서

substring()은

문자열을 잘라주는

메서드입니다.


일단 다른

문자열처리

메서드와 결합없이

substring만 사용하는

방법에 대해 알아보겠습니다.




substring(int beginIndex)


먼저

 String.substring(int형 인자 1개)은


String의 시작위치를 잡아서

새롭게 String을 반환해주는

메서드입니다.



예를 들어서


String= "Apple Banana Orange"

이렇게 담겨있을때

앞에 Apple을 빼버리고


String= "Banana Orange"

바나나와 오렌지만

담고 싶을 경우


String의 시작위치를

B부터 잡아주면 되겠죠


이전글에서 문자열의

위치에 대해 알아보았으므로


생각해보면 B는 바로 6번째

위치라는 것을 알 수 있습니다


이를 토대로 코드를 작성해서

확인해보면


String str = "Apple Banana Orange";
String str2 = str.substring(6);
Log.d("ITPANGPANG","결과=>"+str2);



잘 나왔죠?



자 그럼 여기서.

Banana의 위치를 모른다면?


이제부터가 String처리가

재밌어지는 부분이죠


이전글에서 알아보았던

indexOf()와 결합한다면

쉽게 처리할 수 있습니다.


1단계 : str.indexOf("Banana");

바나나의 시작위치를 알아낸다


2단계 : str.substring(str.indexOf("Banana"));

바나나의 시작위치 이전의

String은 제외하고 시작이후

String을 반환한다


String str = "Apple Banana Orange";
String str2 = str.substring(str.indexOf("Banana"));
Log.d("ITPANGPANG","결과=>"+str2);




substring(int start, int end)


이번에는 int형 인자 2개를

넣어서 문자열을 잘라내는 방법을

알아보겠습니다.


위와 같은 문자열을 써보자면

여기서 Apple과 Orange를

제외하고

"Banana"

출력하고 싶다면?


방법은 위에 나와있듯이

start, end의 위치를 잡아주시면

됩니다.


B의 시작 포지션이 6이고

Banana다음 (" ")공백 포지션이 12이므로


substring(6, 12);

라고 넣어주시면 됩니다


이렇게 되는 거겠죠?



코드로 보면

String str = "Apple Banana Orange";
String str2 = str.substring(6, 12);
Log.d("ITPANGPANG","결과=>"+str2);



잘 나온것을 확인했습니다.



이것 역시 만약 위치를 모른다면?

위와 똑같이

indexOf를 사용해주면

됩니다


String은 정말 다루기

나름인것 같습니다.


여기서도 방법이 정말

여러가지입니다.


시작위치 6은

그대로 Banana

위에서처럼 indexOf("Banana")

로 찾아줘도 되고


뒤에 위치 12를

잡아줄때

여러가지 방법이 있습니다


먼저

String str = "Apple Banana Orange";
String str2 = str.substring(str.indexOf("Banana"), str.indexOf(" ",str.indexOf("Banana")));
Log.d("ITPANGPANG","결과=>"+str2);


이렇게 잡을 수 있겠죠?


str.indexOf("Banana")

이거야 뭐 6이고


str.indexOf(" ", str.indexOf("Banana"))


" "공백을 찾아라

Banana의 시작위치

즉 6이후로



두번째 방법

String str = "Apple Banana Orange";
String str2 = str.substring(str.indexOf("Banana"), str.indexOf(" Orange"));
Log.d("ITPANGPANG","결과=>"+str2);


바로 12에 해당하는

위치를 찾기위해

공백뒤에 Orange까지 써줘버리면

한번에 찾아버릴 수 있습니다.



좀 더 정확하게 하려면

end 위치를

시작위치+Banana의 length

로 잡으면 되지만

아직 length를 한번도

언급을 안했기에 다음번에~



물론 같은 결과를

다른 메서드를

사용하면 더 쉽게 나타낼 수 있습니다


그리고 지금은 String에

중복음절이 없다고 가정하고

진행하고 있기에 100%로 완벽하지는

않습니다


이 점을 고려하면서

봐주세요!


끝!