-
[Regex] Pattern 객체를 이용해 효율적으로 replaceAll() 사용하기개발/자바 2020. 9. 16. 15:05
입력을 받을 때마다 공백을 제거해야 하는 일이 생겼습니다. 자바스크립트는 조금 다른 것 같은데 자바나 C++은 코드 길이가 짧을수록 성능이 안 좋아지는 경우가 많은 것 같습니다. 매번 replaceAll() 호출해 공백을 없애는 게 찝찝해서 효율적인 방법이 있는지 알아보았습니다.
String.replaceAll()은 호출될 때마다 regex를 컴파일하기 때문에 성능에 안 좋은 영향을 줍니다. Pattern 객체를 이용하면 이를 피해갈 수 있습니다.
Pattern p = Pattern.compile("[ ]*"); System.out.println(p.matcher("Hello World").replaceAll(""));
더하기 기호가 아니라 별 기호를 써줘야 빈 문자열을 replace하지 않아 속도를 올릴 수 있다고 합니다. 정규표현식에서 더하기 기호는 one or more이고 별 기호는 zero or more을 의미하는데 빈 문자열을 replace하는 것과 무슨 상관이 있는지 아직 정확하게 모르겠습니다. 일단 일을 하겠습니다. 알게 되면 댓글에 관련 내용을 추가하겠습니다.
'개발 > 자바' 카테고리의 다른 글
[Intellij] 윈도우에서 한글 깨짐 해결 (0) 2023.05.08 [Socket] Ethernet to 485 communication (0) 2020.09.18 Dynamic Web Project를 Import한 후 생긴 오류들 (0) 2020.04.25 추상 클래스는 무엇 (0) 2020.03.19 참조변수에 대한 작은 오해 (0) 2020.03.16