어제 오늘 내일

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

IT/Java

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

hi.anna 2021. 4. 21. 10:26

 

이번에는 Java 문자열의 앞뒤 공백을 제거하는 방법을 알아보도록 하겠습니다.

 

문자열 앞뒤의 공백을 제거하기 위해서 java.lang.String 클래스의 trim(), strip() 메소드를 사용할 수 있습니다.

이 두개의 메소드는 비슷하지만 약간의 차이가 있는데,

그 차이점도 같이 알아보도록 하겠습니다.

 

 

1. trim()

 코드 

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

        // 앞뒤로 공백이 있는 문자열
        String str = "  Hi Anna!     ";

        // 공백 제거 (trim())
        String trimStr = str.trim();

        // 공백 제거 문자열 출력
        System.out.println("원본 문자열 : '" + str + "'");
        System.out.println("trim 문자열 : '" + trimStr + "'");

    }
}

 결과 

원본 문자열 : '  Hi Anna!     '
trim 문자열 : 'Hi Anna!'

java.lang.String 클래스의 trim() 메소드는

앞뒤 공백을 제거한 문자열의 복사본을 리턴합니다.

 

 

 

2. strip()

strip()

 코드 

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

        // 앞뒤로 공백이 있는 문자열
        String str = "  Hi Anna!     ";

        // 공백 제거 (strip())
        String stripStr = str.strip();

        // 공백 제거 문자열 출력
        System.out.println("원본 문자열 : '" + str + "'");
        System.out.println("strip 문자열 : '" + stripStr + "'");

    }
}

 결과 

원본 문자열 : '  Hi Anna!     '
strip 문자열 : 'Hi Anna!'

java.lang.String 클래스의 strip() 메소드는

Java 11 이후 새로 추가된 메소드 입니다.

strip() 메소드는 trim() 메소드와 마찬가지로

문자열 앞뒤의 공백을 모두 제거해 줍니다.

 

 

stripLeading(), stripTrailing()

 코드 

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

        // 앞뒤로 공백이 있는 문자열
        String str = "  Hi Anna!     ";

        // 공백 제거 (stripLeading(), stripTrailing())
        String stripLeadingStr = str.stripLeading();
        String stripTrailingStr = str.stripTrailing();

        // 공백 제거 문자열 출력
        System.out.println("원본 문자열 : '" + str + "'");
        System.out.println("stripLeading 문자열 : '" + stripLeadingStr + "'");
        System.out.println("stripTrailing 문자열 : '" + stripTrailingStr + "'");

    }
}

 결과 

원본 문자열 : '  Hi Anna!     '
stripLeading 문자열 : 'Hi Anna!     '
stripTrailing 문자열 : '  Hi Anna!'

Java 11 이후로는

stripLeading(), stripTrailing() 메소드도 이용할 수 있습니다.

stripLeading() 메소드는

문자열 앞의 공백을 제거해 줍니다.

stripTrailing() 메소드는

문자열 뒤의 공백을 제거해 줍니다.

 

 

 

3. trim() vs strip() 차이

위의 예제들만 보면 trim() 과 strip()은 별 차이가 없어 보이지만,

제거하는 공백은 종류가 조금 다릅니다.

 

 trim() 

'\u0020' 이하의 공백들만 제거합니다.

 

 strip() 

유니코드의 공백들을 모두 제거합니다.

 

사실 유니코드에는 우리가 일반적으로 많이 사용하는 스페이스('\u0020'), 탭('\u0009) 등 외에도 

더 많은 종류의 공백 문자들이 있습니다. 

strip() 메소드는 trim() 보다 더 많은 종류의 공백을 제거할 수 있습니다.

 

 코드 

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

        // 앞뒤로 공백이 있는 문자열
        String str = "\u2003Hi Anna!\u2003";

        // 공백 제거 
        String trimStr = str.trim();
        String stripStr = str.strip();

        // 공백 제거 문자열 출력
        System.out.println("원본 문자열 : '" + str + "'");
        System.out.println("trim 문자열 : '" + trimStr + "'");
        System.out.println("strip 문자열 : '" + stripStr + "'");

    }
}

 결과 

원본 문자열 : ' Hi Anna! '
trim 문자열 : ' Hi Anna! '
strip 문자열 : 'Hi Anna!'

위 예제의 문자열은

앞뒤로 공백 '\u2003' (EM SPACE)를 포함하고 있습니다.

이 공백은 '\u0020' 이상의 공백문자이기 때문에

trim() 메소드로는 이 공백을 제거할 수 없고,

strip() 메소드를 이용해야 합니다.

결과를 보면, trim() 메소드로 공백을 제거한 문자열에는 공백이 남아있고,

strip() 메소드로 공백을 제거한 문자열은 공백이 제거된 것을 확인 할 수 있습니다.

 

 

 

반응형
Comments