관리 메뉴

나만을 위한 블로그

[Android] split()이란? 본문

Android

[Android] split()이란?

참깨빵위에참깨빵 2020. 9. 24. 21:21
728x90
반응형

먼저 split이 뭔지 확인하자

split : 분열되다, 의견이 갈리다, 분열시키다, (작은 부분들로) 나뉘다, 나누다

 

사전에 나온 뜻처럼 split은 뭔가를 잘게 나누는 메서드다. 그럼 뭘 잘게 나누는가?

예를 들어 "아이스 아메리카노 하나 주세요" 라는 문장이 있다고 치자. 그리고 나는 이 문장에서 단어 사이사이의 공백을 제거하고 단어들만 필요한 상황이라고 가정하자.

이럴 경우 어떻게 해야 할까? 그냥 무턱대고 전역변수로 String 변수 4개 선언 때리고 아이스, 아메리카노, 하나, 주세요 총 4개의 단어를 저장시키는 것도 방법이라면 방법이다.

하지만 주어지는 문장이 저것 하나만 있는 건 아니다. 공백이 적거나 많을 수도 있고 콤마 등의 특수문자까지 섞이면 아주 가관이다. 이 때도 일일이 String 변수를 여럿 선언한 다음 일일이 담아서 쓸 수 없는 노릇이다. 할 수 있다 해도 귀찮다.

 

이 귀찮음을 해결해주기 위한 메서드가 바로 split()이다. 즉, split()은 문자열의 어떤 요소를 구분자 삼아 그것을 기준으로 문장을 자른 다음, 잘라진 문장의 요소들을 반환하는 메서드다.

구분자는 데이터의 항목을 구분해 편성하는 표지라는 사전적 정의가 있는데, 쉽게 말해서 위의 "아이스 아메리카노 하나 주세요" 에서 공백을 기준으로 자른다면 공백이 구분자가 된다.

공백을 기준으로 문장을 자르면 아이스/아메리카노/하나/주세요 로 나뉘어진다.

비슷한 효과를 주는 substring()도 있지만 난 주로 split()을 애용하기 때문에, split()을 위주로 설명하려 한다.

 

먼저 간단한 예시다. 예문은 위에서 사용한 "아이스 아메리카노 하나 주세요"다. 이걸 split()으로 어떻게 자르는지 확인해보자.

이클립스 기준으로는 이렇게 사용한다.

 

public static void main(String[] args) {
		
		// 예문
		String str = "아이스 아메리카노 하나 주세요";
		
		// String[]을 선언한 후, 공백을 구분자로 split()한 결과를 집어넣는다.
		// 만약 그냥 String result로 선언한다면 Type mismatch: cannot convert from String[] to String 에러가 발생한다
		String[] result = str.split(" ");
		
		// String[]의 길이만큼 for문을 돌면서
		for (int i = 0; i < result.length; i++)
		{
			// String[] 안의 요소들을 출력한다 
			System.out.println(result[i]);
		}
		
	}

 

주석을 보면 String result로 선언한다면 Type mismatch라는 컴파일 에러가 뜬다는 문장이 있다. 확인하려면 String 뒤의 []을 지우기만 하면 바로 컴파일 에러가 발생하니 진짜 발생하는지 확인해보자. 왜 저런 에러가 뜨는지도 생각해보고 찾아보면 좋다. str 안의 문장을 바꿔서도 실행해보자.

그 밑은 for문으로 String[] result 안을 돌면서 println()으로 요소들을 출력해주는 간단한 코드다.

위 코드를 실행하면 아래와 같은 결과가 나온다.

 

println()의 효과로 split()된 요소들이 아래로 한 칸씩 프린트되는 걸 볼 수 있다.

다음은 위와 같은 코드를 안드로이드에서는 어떻게 사용하는지 보여주는 예시다.

 

private void split_prac()
    {
        String[] array = "아이스 아메리카노 하나 주세요".split(" ");
        for (int i = 0; i < array.length; i++)
        {
            Log.e("split()", "나눠진 단어들 : " + array[i]);
        }
    }

메서드 형태라 보이는 게 다를 뿐이지 똑같은 기능을 수행하는 코드다.

위 코드를 실행하면 아래와 같은 로그들이 로그캣에 출력된다.

 

 

이클립스에서와 똑같이 공백을 구분자로 나뉘어진 단어들이 출력되는 걸 볼 수 있다.

 

지금은 문장 안에 들어있는 공백을 split()하는 경우만 간단하게 봤지만, 실제론 처음에 말했듯 콤마 등의 특수문자가 문장에 섞여 있는 게 다반사고, 이 문장에서 한글이나 영어 단어만 따로 잘라내서 써야 할 때가 생기는 게 대부분이다.

그 경우에 어떻게 해야 하는지는 다른 분들이 친절하게 설명을 해놨고 검색하면 다 나오기 때문에 그걸 참고하자.

반응형
Comments