본문 바로가기
프로그래밍/Java

Java에서 문자열 앞뒤 공백 제거

by KHRDev 2022. 5. 31.

String.trim() vs String.strip()


Java에서 String(문자열)에서 앞 뒤 혹은 Only 앞, Only 뒤의 공백을 제거해야 할 일이 생기기 마련이다..

크게 trim()과 strip() 두 가지 메소드가 존재하는데 두 가지의 차이도 알아볼 겸 예제 코드를 작성해보자..

 

1. String.trim()

import static org.assertj.core.api.Assertions.assertThat;

public class Length_of_Last_Word {
	public static String lengthOfLastWord(String s) {
        System.out.println("원래 s : [" + s + "]");

        s = s.trim();

        System.out.println("앞뒤 공백을 자른 s : [" + s + "]");

        return s;
    }

    public static void main(String[] args) {
        assertThat(lengthOfLastWord("   luffy is still joyboy    "))
        	.isEqualTo("luffy is still joyboy");
        assertThat(lengthOfLastWord("   fly me   to   the moon  "))
        	.isEqualTo("fly me   to   the moon");
    }
}

 

※ 결과

assertj를 활용하여 테스트 코드가 정상적으로 통과하는 지도 같이 한 번 확인해보았다..

input parameter로 받은 앞뒤 공백이 포함된 luffy is still joyboy와 fly me   to   the moon의 앞뒤 공백이 s.trim()에 의해서 정상적으로 제거된 것을 확인할 수 있다.

 

2. String.strip()

2-1. String.strip()

import static org.assertj.core.api.Assertions.assertThat;

public class Length_of_Last_Word {
    public static String lengthOfLastWord(String s) {
        System.out.println("원래 s : [" + s + "]");

        s = s.strip();

        System.out.println("앞뒤 공백을 자른 s : [" + s + "]");

        return s;
    }

    public static void main(String[] args) {
        assertThat(lengthOfLastWord("   luffy is still joyboy    "))
        	.isEqualTo("luffy is still joyboy");
        assertThat(lengthOfLastWord("   fly me   to   the moon  "))
        	.isEqualTo("fly me   to   the moon");
    }
}

※ 결과

java.lang.String.strip()은 Java 11 버전 이후로 새로 추가된 메소드이다. 앞서 trim()과 마찬가지로 문자열의 앞뒤 공백을 모두 제거해준다. strip()은 추가적으로 stripLeading()과 stripTrailing()이 존재한다. 같이 한 번 확인해보자.

 

2-2. String.stripLeading(), String.stripTrailing()

public class Length_of_Last_Word {

    public static void main(String[] args) {
        String s = "   luffy is     still joyboy     ";

        System.out.println("원래 s : [" + s + "]");
        System.out.println("앞 공백을 자른 s : [" + s.stripLeading() + "]");
        System.out.println("뒤 공백을 자른 s : [" + s.stripTrailing() + "]");
    }
}

※ 결과

String.stripLeading()은 앞의 공백을 제거해주고 String.stripTrailing()은 뒤의 공백을 제거해주기 때문에 필요에 따라 선택적으로 공백을 제거할 수 있다.

 

trim()과 strip()의 차이점


trim() 메소드는 스페이스('\u0020') 이하의 공백들만 제거한다.

strip() 메소드는 유니코드의 공백들을 모두 제거한다.

유니코드에는 일반적으로 많이 사용하는 스페이스('\u0020'), Tab(`\u0009`) 이외에도 많은 공백 문자들이 존재하고 

그 모든 공백문자들을 제거해준다. 

결국 strip() 메소드가 trim() 메소드 보다 더 많은 종류의 공백 문자를 제거할 수 있다.

또한 앞서 말한 것과 같이 strip에는 stripLeading(), stripTrailing()이 존재하므로 선택적으로 공백을 제거할 수 있다.

 

이전에 JAVA8 버전이 프로젝트 점유율을 지배했다면 근래 JAVA11 버전이 프로젝트 점유율을 지배해가고 있는 추세이다.

우리 모두 JAVA11 이상 버전을 사용하도록 하자..

'프로그래밍 > Java' 카테고리의 다른 글

ModelMapper란?  (0) 2023.07.12
[Java] StringTokenizer에 대해 알아보자~  (0) 2022.08.09
String vs (StringBuffer vs StringBuilder)  (0) 2022.06.07
Java로 Client IP 찾는 방법  (0) 2022.05.23
++i vs i++  (0) 2022.05.18

댓글