본문 바로가기
Language/Java

[Java] 문자열을 공백으로 분리해서 단어 배열 얻기 / split, .trim().split("\\s+")

by 키튼햄 2023. 11. 2.

 

공백이 한 칸일 때

간단하게 split(" ")을 사용하면 분리할 수 있다.

class Solution {
    public String[] solution(String my_string) {
        String[] answer = my_string.split(" ");
        return answer;
    }
}

//입력 > "i love you"
//출력 > ["i", "love", "you"]

 

 

공백이 두 칸 이상 일 때

공백이 두 칸 이상 일 때는 split(" ")으로는 분리 할 수 없다.

왜냐하면 이 경우에는 split 메서드가 문자열

을 공백문자(space) 기분으로 분할하려고 하는데, 문자열 안에 연속된 공백이 여러개 있는 경우, 각 연속된 공백은 각각의 공백 문자로 간주되어 결과로 나오는 배열에는 빈 문자열(" ")도 포함되기 때문이다.

 

따라서 공백이 두 칸 이상일 경우에는 아래와 같이 사용하여 문자열을 분리할 수 있다.

.trim().split("\\s+")

정규표현식 \\s+는 하나 이상의 공백 문자를 나타낸다.

따라서 연속된 공백 문자가 하나의 공백 문자로 간주되어 빈 문자열은 배열에 포함되지 않고 문자열을 분리할 수 있다.

 

또한, trim() 메서드를 사용하는 이유는 입력 문자열의 앞 뒤의 불필요한 공백을 제거하기 위함이다.

만약 trim() 메서드를 사용하지 않고 split("\\s+")를 사용하면 입력 문자열의 앞뒤에 공백이 있는 경우 그 공백도 단어로 취급되어 배열에 포함된다. 따라서 공백을 전부 뺀 문자열만을 분리하기 위해서는 trim()을 사용해 앞뒤 문자열의 공백을 제거해주는 작업이 필요하다.

 

class Solution {
    public String[] solution(String my_string) {
        String[] answer = my_string.split("\\s+");
        return answer;
    }
}

//입력값 > "   i    love  you"
//기댓값 > ["i", "love", "you"]