String 다루기 - indexOf(기본)

Posted by ITPangPang
2016. 10. 21. 00:39 안드로이드(android)/String 다루기


String 다루기

indexOf(기본)



ㆍ indexOf(String str)


ㆍ indexOf(int ch)


indexOf(int ch, int fromIndex)


ㆍ indexOf(String str, int fromIndex)




자바 처음 시작할때

예제들 풀면서

참 많이 사용했던

indexOf


그때 이후로

필요할때만 사용하고

정리해본 기억이

없어서 한번 써보려합니다.


오늘은 일단 기본인

사용방법 정도만..


아마 이것만 봤을때는

이걸 어디다가 써?

생각할 수 있지만..


나중에 다른 String을

다루는 메서드와 결합하면

엄청엄청난 효율성을

보장받을 수 있습니다

(+ 정규표현식)


안드로이드 스튜디오가

사용하기 편해서

안스환경에서

진행해보도록 하겠습니다.


어짜피 Log로 찍을꺼니

똑같을듯..


indexOf(int ch)


가장 기본적인 형태부터

보겠습니다.


indexOf는

문자열에서 위치를

찾아주는 역할을 합니다


위치!

이게 엄청 중요하죠


예를 들어

Hello World!

라는 문자열은


각 글자 하나하나마다

포지션이 정해져있습니다

이런 식으로 0번부터

시작됩니다.


공백도 한자리

차지한다는

점을 잊지 말아야 합니다.


indexOf

위와 같은 글자에서

숫자를 뽑아주는 역할이죠


W를 위치를 알려 줘!

indexOf("W");


d의 위치를 알려 줘!

indexOf("d");


코드로 똑같이

써보면 위치를

알 수 있습니다.


String str = "Hello World";
Log.d("ITPANGPANG","결과=>"+str.indexOf("W"));
Log.d("ITPANGPANG","결과=>"+str.indexOf("d"));



이렇게

사용하면 됩니다


indexOf(String str)


위와 다를것이 없습니다.

다만 만약에 한글자가 아닌


Hello의 위치를 찾아 줘!

indexOf("Hello");


World의 위치를 찾아 줘!

indexOf("World");


이런식으로 String형태로

적어주게 되면 어떤결과가

나올까요?


String str = "Hello World";
Log.d("ITPANGPANG","결과=>"+str.indexOf("Hello"));
Log.d("ITPANGPANG","결과=>"+str.indexOf("World"));



결과를 보면

0 = H

6 = W


즉, String 형태로 넣어주면

문자열의 시작인

첫번째 글자의 위치

찾아주게 됩니다


indexOf(int ch, int fromIndex)


자 이번에는

indexOf에 인자 2개를

넣어줘야 되네요


첫번째 ch는 알겠으나

두번째 fromIndex가

무엇인가 하면


어떨때 쓰는지

한번 예를 들어 보면


Hello World

가 아닌


Hello World Hello World

이렇게 되있다고 가정했을때

H를 찾기 위해서는

위에서 썼던것처럼


indexOf("H");

쓰겠죠


그렇다면 결과는 0이 나옵니다

첫번째 H를 찾는거죠!


그런데 만약 2번째

Hello World에서의 H를

찾고싶다면??


위에서 썼던 방법으로는

찾을수가 없습니다.


그래서 fromIndex

추가해줍니다


indexOf("H",2);

이라고 적어준다면


이렇게

위치가 2인

l부터 찾아주게 됩니다.


코드로 돌려보면

String str = "Hello World Hello World";
Log.d("ITPANGPANG","결과=>"+str.indexOf('H', 2));



결과를 보니

앞에나오는


H = 0


이 아닌 두번째 Hello World가

시작하는


H = 12


를 찾은 것을 확인 할 수 있습니다


indexOf(String str, int fromIndex)


역시 동일합니다.

String str = "today to too metoo";
Log.d("ITPANGPANG","결과=>"+str.indexOf("to", 2));



to를 찾는데

fromIndex값으로 2를 넣어줌으로써


첫번째 today의 to가 아닌

6번째 위치에서 시작하는 to

를 찾았습니다


Hello World에서

today to too metoo

로 바꾼 이유는


지금은

today to too metoo

이렇게 to가 다 걸쳐있지만


뒤에서는 to만 정확히

일치하는 문자열만

찾는 방법도 알아볼 것이기

때문에 한번 써봤습니다.