Recent Posts
Recent Comments
Link
01-08 06:24
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' 카테고리의 다른 글

JAVA 현재 날짜와 시간을 지정한 날짜 형식으로 출력  (0) 2024.01.03
gradle and groovy  (1) 2024.01.01
인텔리제이 세팅  (0) 2023.12.21
Spring MVC 프로젝트 구조  (0) 2023.01.19
Spring MVC 다국어 처리  (0) 2023.01.18