Study/java

[Java] String - replace, replaceAll : 다른 문자열로 대체

 

replace와 replaceAll은 문자열의 일부를 다른 문자열로 대체해주는 메소드입니다.

 

replace(char oldChar, char newChar)

문자열에서 특정 문자를 찾아서 새로운 문자열로 바꿔주는 메소드입니다.

 

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'));

replace 사용결과
replace 사용결과

파라미터 타입은 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]", "*"));

replaceFirst, All 사용결과
replaceFirst, All 사용결과

정규식을 변수로 받기때문에 문자열에서 숫자만 변환하거나 특정 알파벳만 변환하거나 범위를 지정하여 변환하는 등의 로직을 수행할 수 있습니다.

String s = "010-0000-0000";
System.out.println(s.replaceAll("[0-9]{4}", "****"));

전화번호 010을 제외한 나머지 가리기
전화번호 010을 제외한 나머지 가리기

4자리 숫자는 모두 *로 변환하는 정규식입니다.

 

replace보다는 replaceFirst나 replaceAll이 더 넓은 범위의 로직을 수행합니다.

조건을 지정하여 변환할 수 있기 때문입니다.

 

 

 

읽으면 좋은 글

[Java] 정규식으로 특수 문자 포함 여부 체크 및 제거하는 방법

 

[Java] 정규식으로 특수 문자 포함 여부 체크 및 제거하는 방법

자바로 정규식을 사용해서 문자열에 특수문자가 포함되어있는지 여부와 정규식을 사용하여 문자열에 포함된 특수문자를 제거하는 방법을 설명드리겠습니다. 정규식 특수문자 포함 여부 체크

priming.tistory.com