Study/java

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

 

replace 함수란?

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

Java replace, replaceAll 공식문서 바로가기

 

String (Java Platform SE 8 )

Compares two strings lexicographically. The comparison is based on the Unicode value of each character in the strings. The character sequence represented by this String object is compared lexicographically to the character sequence represented by the argum

docs.oracle.com

 

 

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

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이 더 넓은 범위의 로직을 수행합니다.

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

 

replaceAll 여러개 사용 방법

replaceAll을 여러번 적용할 수 있습니다.

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

replaceAll 여러개 적용 결과
replaceAll 여러개 적용 결과

주의할 점은 replaceAll의 결과를 별도의 변수로 저장해야 적용이 됩니다.

 

읽으면 좋은 글

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

 

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

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

priming.tistory.com