[Java] replace()와 replaceAll()의 차이점

2025. 7. 22. 19:00·Backend/Java

1️⃣ replace() 모든 일치하는 '문자열'을 바꾼다

 

replace()는 이름 그대로 문자열을 치환합니다.
여기서 가장 중요한 포인트는 첫 번째 인자로 문자열 리터럴(Literal), 즉 '있는 그대로의 텍스트'를 받는다는 점입니다.

  • 동작 방식: 지정된 문자열(CharSequence)을 찾아 모두 교체합니다.
  • 특징: 정규식(Regex)을 해석하지 않고, 단순 텍스트로만 비교합니다.

예시 코드:

⚠️replace()는 첫 번째 하나만 바꾸는 것이 아니라, 일치하는 모든 문자열을 바꿉니다 오해 금지!!
String text = "hello java, world java!";

// "java"라는 문자열을 "kotlin"으로 모두 바꾼다.
String result = text.replace("java", "kotlin");

System.out.println(result);
// 출력: hello kotlin, world kotlin!

 


2️⃣ replaceAll() '정규식 패턴'과 일치하는 모든 것을 바꾼다

 

replaceAll()의 핵심은 첫 번째 인자로 정규식(Regular Expression)을 받는다는 것입니다.
이 덕분에 단순한 텍스트를 넘어 복잡한 패턴을 찾아 치환할 수 있습니다.

  • 동작 방식: 지정된 정규식 패턴과 일치하는 모든 부분을 찾아 교체합니다.
  • 특징: 강력한 패턴 매칭이 가능합니다.

예시 코드 1: 숫자 모두 제거하기

String text = "My phone number is 010-1234-5678";

// [0-9]는 모든 숫자를 의미하는 정규식
String result = text.replaceAll("[0-9]", "*");

System.out.println(result);
// 출력: My phone number is ***-****-****

 

예시 코드 2: 특수문자 치환 시 주의점
만약 마침표(.)처럼 정규식에서 특별한 의미를 갖는 문자를 치환하고 싶다면, 반드시 이스케이프(\\) 처리를 해야 합니다.

String text = "file.name.txt";

// 잘못된 사용: .은 '모든 문자'를 의미하므로 전부 바뀐다.
String wrongResult = text.replaceAll(".", "#"); 
System.out.println(wrongResult); // 출력: #############

// 올바른 사용: \\. 으로 마침표 자체를 의미하도록 한다.
String correctResult = text.replaceAll("\\.", "#");
System.out.println(correctResult); // 출력: file#name#txt

핵심 비교 및 성능

구분 replace() replaceAll()
첫 번째 인자 문자열 리터럴 (CharSequence) 정규식 (Regular Expression)
처리 방식 단순 텍스트 비교 정규식 패턴 매칭
성능 빠름 상대적으로 느림 (정규식 컴파일 과정 필요)
사용 시점 고정된 문자열을 치환할 때 숫자, 특수문자 등 특정 패턴을 치환할 때

 

성능 차이가 나는 이유는 replaceAll()이 내부적으로 정규식을 컴파일하는 추가적인 과정을 거치기 때문입니다.
따라서 단순한 문자열 치환이라면 고민 없이 replace()를 쓰는 것이 좋습니다.

 


💡결론

이것만 기억하세요!!

 

단순 텍스트 치환이 필요하면 replace()
정규식을 이용한 패턴 치환이 필요하면 replaceAll()

'Backend > Java' 카테고리의 다른 글

[Java] 자바 정규 표현식(Regular Expression) 정리  (1) 2025.08.05
[Java] switch 문 최신 문법까지 정리해보기 (Java 14+)  (0) 2025.07.29
[Java] 약수의 개수를 구하는 효율적인 알고리즘 정리  (0) 2025.07.16
[Java] 배열 복사 메서드 간단 정리  (0) 2025.07.15
[Java, String] split() 메서드 정리 - 문자열 자르기  (0) 2025.07.13
'Backend/Java' 카테고리의 다른 글
  • [Java] 자바 정규 표현식(Regular Expression) 정리
  • [Java] switch 문 최신 문법까지 정리해보기 (Java 14+)
  • [Java] 약수의 개수를 구하는 효율적인 알고리즘 정리
  • [Java] 배열 복사 메서드 간단 정리
devoks
devoks
꾸준히 작성해보자!
  • devoks
    ok's 개발 블로그
    devoks
  • 전체
    오늘
    어제
    • 분류 전체보기 (110) N
      • Backend (15)
        • SpringBoot (0)
        • Java (15)
      • Cs (17) N
      • Infra (0)
        • AWS (0)
        • Docker (0)
      • CodingTest (78)
        • Programmers (78)
  • 링크

    • My GitHub
  • 인기 글

  • 태그

    java
    BufferedWriter
    json
    programmers
    switch
    BufferedReader
    StringTokenizer
    effectivejava
    codingtest
    CS
  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
devoks
[Java] replace()와 replaceAll()의 차이점
상단으로

티스토리툴바