replace 함수란?
replace와 replaceAll은 문자열의 일부를 다른 문자열로 대체해주는 메소드입니다.
Java replace, replaceAll 공식문서 바로가기
replace(char oldChar, char newChar) 사용 방법
replace 함수는 다음과 같이 사용할 수 있습니다.
String s = "abc aaa bbb";
System.out.println(s.replace("a", "d"));
s = "aaa aaa aaa";
System.out.println(s.replace("b", "d"));
System.out.println(s.replace("aaa", "d"));
System.out.println(s.replace("aaa", "ddd"));
System.out.println(s.replace('a', 'd'));
파라미터 타입은 char이지만 큰따옴표를 사용하여 문자열을 사용할수도 있습니다.
당연하지만 해당 문자열이 기준문자열에 없다면 변환작업은 이루어지지 않습니다.
파라미터 타입 중에 CharSequence타입도 존재합니다.
replace(CharSequence target, CharSequence replacement)
사용 방식은 동일하며, CharSequence이기 때문에 파라미터에 String을 사용해도 괜찮습니다.
replaceFirst, replaceAll(String regex, String replacement)
해당 메소드는 정규식에 매칭되는 문자열을 다른 문자열로 대체하는 기능을 합니다.
replaceFirst는 정규식에 매칭되는 첫번째 문자열만 변환하고 replaceAll은 매칭되는 모든 문자열을 변환합니다.
String s = "010-0000-0000";
System.out.println(s.replaceFirst("-", "*"));
System.out.println(s.replaceAll("-", "*"));
System.out.println(s.replaceAll("[0-9]", "*"));
정규식을 변수로 받기때문에 문자열에서 숫자만 변환하거나 특정 알파벳만 변환하거나 범위를 지정하여 변환하는 등의 로직을 수행할 수 있습니다.
String s = "010-0000-0000";
System.out.println(s.replaceAll("[0-9]{4}", "****"));
4자리 숫자는 모두 *로 변환하는 정규식입니다.
replace보다는 replaceFirst나 replaceAll이 더 넓은 범위의 로직을 수행합니다.
조건을 지정하여 변환할 수 있기 때문입니다.
replaceAll 여러개 사용 방법
replaceAll을 여러번 적용할 수 있습니다.
String s = "010-0000-0000";
s = s.replaceAll("-", "*")
.replaceAll("[0-9]{4}", "****");;
System.out.println("s = " + s);
주의할 점은 replaceAll의 결과를 별도의 변수로 저장해야 적용이 됩니다.
읽으면 좋은 글
[Java] 정규식으로 특수 문자 포함 여부 체크 및 제거하는 방법