개발/Java
[Java] replace() vs replaceAll() 차이점
JSMun
2024. 6. 30. 20:03
replace()와 replaceAll()의 공통적인 특징은 모두 특정 문자열을 다른 문자열로 변환하는 함수입니다.
차이점은,
- replace()의 경우 특정 문자열과 일치하는 문자열을 찾아서 변환해주고
- replaceAll()은 정규표현식 패턴과 일치하는 문자열을 찾아서 변환해줍니다.
메소드 정의를 보시면 replaceAll의 경우 regex(정규표현식)를 인자로 받는 것을 알 수 있습니다.
public String replace(char oldChar, char newChar)
public String replaceAll(String regex, String replacement)
공통점: 둘다 특정 문자열을 찾아서 변환할 수 있음
아래 예제는 replace와 replaceAll에 특정 문자열을 인자로 전달하여 치환하는 예제입니다. "is"를 찾아서 "-"로 변환하고 있습니다. 결과를 보면, replace와 replaceAll에 치환할 문자열을 전달하면 둘 다 일치하는 문자열을 모두 찾아서 치환하고 결과를 리턴합니다.
replace에 All이 붙지 않았다고 해서, 일치하는 여러 문자열 중에서 하나만 변경하진 않습니다. 일치하는 모든 문자열을 변환합니다.
public class Example1 {
public static void main(String[] args) {
String str = "This is Example, Topic is replace vs replaceAll";
String newStr = str.replace("is", "-");
System.out.println(newStr);
newStr = str.replaceAll("is", "-");
System.out.println(newStr);
}
}
Output:
Th- - Example, Topic - replace vs replaceAll
Th- - Example, Topic - replace vs replaceAll
차이점: replace는 문자열 치환, replaceAll()은 정규식 패턴 치환
replace는 문자열 치환만 가능하지만, 다음 예제처럼 replaceAll()은 정규식을 인자로 받아서 일치하는 문자열을 치환합니다.
- \\s : 공백을 의미하는 정규표현식입니다.
- \\sis\\is : " is "를 의미하는 정규표현식입니다. (앞 뒤로 공백이 있고, 가운데 is 문자열)
public class Example2 {
public static void main(String[] args) {
String str = "This is Example, Topic is replace vs replaceAll";
String newStr = str.replaceAll("\\sis\\s", "-");
System.out.println(newStr);
}
}
Output:
This-Example, Topic-replace vs replaceAll