삶 가운데 남긴 기록 AACII.TISTORY.COM
String 치환시 replace()와 replaceAll()의 차이 본문
자바에서 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 |