본문 바로가기

Language/JAVA

[JAVA] 자바 replace와 replaceAll 차이점 사용법

설명

replace는 문자 -> 문자 혹은 문자열 -> 문자열로 치환해주는 메소드이고

replaceAll은 replace 역할도 하지만, "정규식"을 사용해서 좀 더 효율적으로 문자열을 바꿀 수 있다.

 

 

 

예시
public class example {
    public static void main(String[] args) {
        String str = "ABC";
        String result = str.replace("A", "");
        System.out.println("replace() : "+ result);

        str = "ABC";
        result = str.replaceAll("A", "");
        System.out.println("replaceAll() : "+ result);
    }
}

결과

replace()와 replaceAll() 모두 특정 문자(혹은 문자열)를 다른 문자로 치환

 

 

 

public class example {
    public static void main(String[] args) {
        String str = "ABC1ABC2ABC3DDD";
        String result = str.replaceAll("[ABC]", "");
        System.out.println("ABC -> 빈 문자열 치환 : "+ result);

        result = str.replaceAll("[^ABC]", "");
        System.out.println("ABC가 아닌 것들 -> 빈 문자열 치환 : "+ result);

        result = str.replaceAll("[A-Z]", "");
        System.out.println("알바펫 모두 -> 빈 문자열 치환 : "+ result);

        result = str.replaceAll("[^A-Z]", "");
        System.out.println("알바펫이 아닌 것들 모두 -> 빈 문자열 치환 : "+ result);

        result = str.replaceAll("[0-9]", "");
        System.out.println("숫자 모두 -> 빈 문자열 치환 : "+ result);

        result = str.replaceAll("[^0-9]", "");
        System.out.println("숫자가 아닌 것들 모두 -> 빈 문자열 치환 : "+ result);
    }
}

결과

replace를 사용했다면

 String result = str.replace("A", "").replace("B", "").replace("C", "");

위의 코드처럼 변경할 문자를 일일이 나열해야 하는데

 

replaceAll() 정규식을 사용하면 String result = str.replaceAll("[ABC]", "");

위의 코드처럼 효율적으로 치환이 가능하다.

 

 

 

 

또한, [A-Z] [0-9] [^A-Z] [^0-9] 등의 다양한 정규식을 통해

알파벳, 숫자, 알파벳이 아닌 것, 숫자가 아닌 것들을 한 번에 몽땅 바꿀 수가 있다.

 

따라서 문자열에서 필요 없는 특수문자들을 제거/치환하거나

숫자 혹은 문자들을 제거/치환할 때 사용하는 것이 좋다.