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