[Java] String 메소드 replace() vs replaceAll()

고운·2023년 5월 23일

Java

목록 보기
5/10

매개변수

String replace(char oldChar, char newChar)

String replace(CharSequence target, CharSequence replacement)

String replaceAll(String regex, String replacement)

String replaceFirst(String regex, String replacement)   // 첫 번째로 찾은 문자열만 변환

❓ CharSequence에 대해서는 여기를 참고

공통점

메소드 이름을 보면 replace는 문자열을 맨 앞에 나오는 것 하나만, replaceAll은 전부 교체해줄 것 같지만

사실 둘 다 해당하는 모든 문자를 찾아서 변환해준다.

예를 들어서

String str="xyxyxy"
String str1 = str.replace("x", "o");
String str2 = str.replaceAll("x", "o");

str1과 str2는 같은 결과값이 나온다. ("oyoyoy")

차이점

: replace는 정규식 사용 불가, replaceAll은 정규식 사용 가능하다.

매개변수에 정규식 사용할 경우

replaceAll

my_string = my_string.replaceAll("[aeiou]"," ");

a,e,i,o,u 문자를 찾아 공백으로 변환해준다.

replace

my_string = my_string.replace("[aeiou]"," ");

"[aeiou]"라는 문자열을 찾아서 공백으로 변환해준다. (정규식 사용 불가)

참고

String은 immutable(변경 불가)이기 때문에 replace나 replaceAll 한 값을 다시 변수에 대입해주어야 값이 바뀐다.

(원래 값은 garbage가 됨)

profile
백엔드 개발자

0개의 댓글