Recent Posts
Recent Comments
Link
06-30 12:53
Today
Total
관리 메뉴

삶 가운데 남긴 기록 AACII.TISTORY.COM

String 치환시 replace()와 replaceAll()의 차이 본문

DEV&OPS/Java

String 치환시 replace()와 replaceAll()의 차이

ALEPH.GEM 2023. 12. 26. 20:01

 

 

자바에서 String을 치환할 때 보통 replace()와 replaceAll()을 사용합니다.

결론부터 말하자면 replaceAll()은 정규식이 올 수 있다는 것이 차이입니다.

일반적인 문자열을 치환할 때 속도가 빠른 replace() 사용하고 보다 복잡한 치환을 할 때는 정규식을 지원하는 replaceAll()을 사용합니다.

 

아래 예제에서 보면 replaceAll()은  . 이나 대괄호가 있으면 정규식으로 인식하여 replace()와 다른 결과가 나온다는 것을 알 수 있습니다.

package test;

public class ReplaceTest {
	
	public static void main(String[] args) {
		String sampleText = "co.kr//123-abcd//[/]-aaaa-00aa";
		System.out.println(sampleText.replace("//", "."));			//co.kr.123-abcd.[/]-aaaa-00aa
		System.out.println(sampleText.replaceAll("//", "."));		//co.kr.123-abcd.[/]-aaaa-00aa
		System.out.println(sampleText.replace("[/]", "."));			//co.kr//123-abcd//.-aaaa-00aa
		System.out.println(sampleText.replaceAll("[/]", "."));		//co.kr..123-abcd..[.]-aaaa-00aa
		System.out.println(sampleText.replace("[-a]", "b"));		//co.kr//123-abcd//[/]-aaaa-00aa
		System.out.println(sampleText.replaceAll("[-a]", "b"));		//co.kr//123bbbcd//[/]bbbbbb00bb
		System.out.println(sampleText.replace("-a", "b"));			//co.kr//123bbcd//[/]baaa-00aa
		System.out.println(sampleText.replaceAll("-a", "b"));		//co.kr//123bbcd//[/]baaa-00aa
		System.out.println(sampleText.replace(".", "@"));			//co@kr//123-abcd//[/]-aaaa-00aa
		System.out.println(sampleText.replaceAll(".", "@"));		//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	}
	
}

 

이것은 두 메서드의 매개변수의 타입만 봐도 알 수 있는데요.

replace()는 char의 배열이 올 수 있고 replaceAll()은 String이어서 정규식을 지원합니다.

 

 

번외로 처음 발견한 문자만 치환하고 싶으면 replaceFirst()를 사용합니다.

 

 

 

728x90

'DEV&OPS > Java' 카테고리의 다른 글

gradle and groovy  (1) 2024.01.01
ORA-01704: JAVA ORACLE JDBC로 4000자 이상 CLOB 데이터 INSERT, UPDATE 예제  (0) 2023.12.27
인텔리제이 세팅  (0) 2023.12.21
Spring MVC 프로젝트 구조  (0) 2023.01.19
Spring MVC 다국어 처리  (0) 2023.01.18