Java 문자열 치환 마스터: replace(), replaceAll(), replaceFirst() 완벽 해설
Java String 클래스는 텍스트를 효율적으로 수정하는 세 가지 강력한 치환 메서드를 제공합니다: replace(), replaceAll(), replaceFirst(). 각각 고유한 목적과 최적화된 사용 케이스가 있습니다.
- replace()
- replaceAll()
- replaceFirst()
Java String replace()
replace() 메서드는 단순 문자 또는 문자열 치환을 수행합니다. 문자열 전체를 스캔해 대상의 모든 출현을 치환값으로 바꾸고 새 String 인스턴스 반환. 정규식 불필요한 직접적 치환에 이상적.
문법
public String replace(CharSequence target, CharSequence replacement)
매개변수
target — 치환하려는 문자 시퀀스.
replacement — target을 대체할 시퀀스.
예제
public class ReplaceExample {
public static void main(String[] args) {
String original = "the quick fox jumped";
System.out.println("원본: " + original);
System.out.println("replace(\"fox\", \"dog\") 후: " + original.replace("fox", "dog"));
System.out.println("replace('t', 'a') 후: " + original.replace('t', 'a'));
}
}
출력
원본: the quick fox jumped
replace("fox", "dog") 후: the quick dog jumped
replace('t', 'a') 후: ahe quick fox jumped
Java String replaceAll()
replaceAll() 메서드는 정규표현식(regex)으로 문자열 전체에서 매치를 식별합니다. 각 매치를 지정된 치환값으로 대체해 새 문자열 반환. 패턴 기반 치환 필요할 때 완벽.
시그니처
public String replaceAll(String regex, String replacement)
매개변수
regex — 부분문자열 위치 찾을 정규식 패턴.
replacement — 각 매치를 대체할 문자열.
예제
public class ReplaceAllExample {
public static void main(String[] args) {
String text = "Guru99 is a site providing free tutorials";
String withoutSpaces = text.replaceAll("\\s", "");
System.out.println(withoutSpaces);
}
}
출력
Guru99isasiteprovidingfreetutorials
Java String replaceFirst()
replaceFirst() 메서드는 replaceAll()과 유사하지만 첫 번째 매치만 영향줍니다. 문자열 처음부터 스캔해 첫 치환 후 중지, 단일 출현만 변경해야 할 때 유용.
시그니처
public String replaceFirst(String regex, String replacement)
매개변수
regex — 대상 부분문자열 식별할 정규식 패턴.
replacement — 첫 매치 대체할 문자열.
예제
public class ReplaceFirstExample {
public static void main(String[] args) {
String sentence = "This website providing free tutorials";
String updated = sentence.replaceFirst("s", "9");
System.out.println(updated);
}
}
출력
Thi9 website providing free tutorials
적절한 메서드 선택 가이드
- 단순한 비정규식 치환엔
replace() 사용.
- 정규식 패턴의 모든 매치 치환 필요시
replaceAll() 선택.
- 첫 번째 출현만 변경해야 하면
replaceFirst() 선택.
이 메서드들은 불변입니다 — 원본 문자열을 절대 변경하지 않고 새 인스턴스 반환해 스레드 안전성과 동시성 환경에서 예측 가능한 동작 보장.