JAVA

JAVA 문자열 치환(replace ) 사용법 정리

Ambitions 2020. 3. 25. 11:40

Java에는 문자열(String)에서 특정문자 치환해줄 수 있는 기능을 제공하는 replace함수를 제공한다.

코딩테스트나 실무에서도 유용하게 사용되는 함수이니 꼭 알아두는게 좋을 것 같다.

종류에는 replace, replaceAll, replaceFirst가 있는데, 사용법은 코드를 통해 알아보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public void replaceTest() {
        
    // ","를 "/"로 치환
        
    String target = "딸기,토마토,수박,사과,배,포도";
    String result = target.replace(",""/"); 
    System.out.println(result);
 
    //결과 = 딸기/토마토/수박/사과/배/포도
 
    String result2 = target.replaceAll(",""/");
    System.out.println(result2);
 
    //결과 = 딸기/토마토/수박/사과/배/포도
 
    String result3 = target.replaceFirst(",""/");
    System.out.println(result3);
 
    //결과 = 딸기/토마토,수박,사과,배,포도
}
cs

결과값만 보면 3개함수의 역할은 심플하다, replace와 replaceAll은 문자열에 존재하는 모든 ,를 /로 치환하였고, 

replaceFirst는 처음 검색된 하나의 ,만을 /로 치환하였다. 여기서 문제는 replace와 replaceAll은 동일한 역할을 하는 것 같은데 왜 나눠져 있는걸까? 정답은 java API문서를 보면 알 수 있다.

replaceAll과 replaceFirst는 첫 번째 인자값으로 정규식이란 것을 확인할 수 있다, 잠깐 replaceAll의 사용법을 응용해보자면 다음과 같이 쓸 수 있을 것 같다.

1
2
3
4
5
6
7
public void replaceTest() {
 
    String target = "200301-1235678";
    String result = target.replaceAll("^(?:[0-9]{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[1,2][0-9]|3[0,1]))-[1-4][0-9]{6}$""정상번호");
    System.out.println(result);
    //결과 = 정상번호
}
cs

replaceAll의 첫 번째 매개인자에 주민등록번호를 검증하는 정규식을 넣어주고, 정상일 경우 정상번호로 치환되게 하는 코드다. 이런식으로 상황에 따라 replace와 replaceAll, Frist를 상황에 따라 맞춰 사용할 수 있을 것 같다.