어제 오늘 내일

[Java] 문자열에서 공백 제거하기 본문

IT/Java

[Java] 문자열에서 공백 제거하기

hi.anna 2021. 4. 25. 06:24

지난 번에는 문자열 앞뒤의 공백을 제거하는 방법을 알아보았습니다.

[Java] 문자열 앞뒤 공백 제거하기 (trim() vs strip() 차이)

 

이번에는 문자열 전체에서 모든 공백을 제거하는 방법을 소개합니다.

 

 

replaceAll()

가장 간단하게 생각해 볼수 있는 방법은

아래와 같이 java.lang.String 클래스의 replaceAll() 메소드를 사용하는 방법입니다.

 

 코드 

public class RemoveWhiteSpace {
    public static void main(String[] args) {

        String str = "  Hi, EveryOne   ! ";

        // 공백 제거
        String newStr = str.replaceAll(" ", "");

        // 결과 출력
        System.out.println("[" + newStr + "]"); // [Hi,EveryOne!]
    }
}

 결과 

[Hi,EveryOne!]

str.replaceAll(" ", "");

문자열 안의 " "(공백)을 ""으로 변환해서, 공백을 제거하였습니다.

 

 

 

하지만, 이런 경우는 공백 제거가 잘 되지 않네요.

 코드 

public class RemoveWhiteSpace {
    public static void main(String[] args) {

        String str = "  Hi,  Every\tOne  \n ! ";

        // 공백 제거
        String newStr = str.replaceAll(" ", "");

        // 결과 출력
        System.out.println("[" + newStr + "]"); 
    }
}

 결과 

[Hi,Every       One
!]

하지만, 위와 같이 문자열에 "\n", "\t" 등이 포함되어 있는 경우에는

str.replaceAll(" ", "")로는

"\t", "\n"이 잘 제거되지 않고 있습니다.

 

 

 

그렇다면? 정규식 이용하기

"\t", "\n" 까지 모두 공백으로 인지하고, 제거하기 위해서는 정규식을 사용하는 것이 좋습니다.

 코드 

public class RemoveWhiteSpace {
    public static void main(String[] args) {

        String str = "  Hi,  Every\tOne  \n ! ";

        // 공백 제거
        String newStr = str.replaceAll("\\s", "");

        // 결과 출력
        System.out.println("[" + newStr + "]");
    }
}

 결과 

[Hi,EveryOne!]

str.replaceAll("\\s", "");

정규식(regular expression, regex)에서

"\s"는 다음의 white space를 표현합니다.

\t, \n, \x0B, \f, \r

replaceAll의 첫번째 인자로 정규식을 사용하면 위에 나열된 공백을 모두 ""로 치환하여, 

제거할 수 있습니다.

공백이 여러 형태로 입력될 수 있으니, 아무래도 이 방법을 사용하는 편이 더 좋겠죠?

 

 

 

반응형
Comments