티스토리 뷰

new study

replace vs replaceAll

kkssry 2019. 6. 21. 02:44

https://www.acmicpc.net/problem/2941

 

2941번: 크로아티아 알파벳

문제 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= 예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. dž는 무조건 하나의 알파벳으로 쓰이고,

www.acmicpc.net

백준 알고리즘 문제를 풀다가 replace 와 replaceAll이 원하는 문자열을 모두 바꿔 주는데 무슨 차이가 있는지 궁금해서 알아보고 이 게시글을 쓰게 되었다.

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class DiffereceReplaceAndAll {
    public static void main(String[] args) {
        String str = "aaabbbccccabcddddabcdeeee";
 
        String result1 = str.replace("abc""왕");
        String result2 = str.replaceAll("[abc]""왕");
        String result3 = str.replace("a""왕").replace("b""왕").replace("c""왕");
 
        System.out.println("result1: " + result1);
        System.out.println("result2: " + result2);
        System.out.println("result3: " + result3);
    }
}
 
 
 

 

 
result1: aaabbbcccc왕dddd왕deeee
result2: 왕왕왕왕왕왕왕왕왕왕왕왕왕dddd왕왕왕deeee
result3: 왕왕왕왕왕왕왕왕왕왕왕왕왕dddd왕왕왕deeee
 
 
 

 

위 코드에서 replaceAll 메서드에서 정규표현식 [abc]는 a 혹은 b 혹은 c 문자를 치환의 대상으로 본다.

replace를 쓸때보다 간결하게 표현할 수 있는걸 확인 할 수있다. 

 

replace는 매개변수로 문자열만 허용하여 문자열만 변환 가능하나

replaceAll은 매개변수로 정규표현식을 넣어 특수문자 혹은 숫자등 불특정 문자를 변환할 수 있다.

 

 

java api를 확인해 보자

 

 
public String replace(CharSequence target, CharSequence replacement) {
        return Pattern.compile(target.toString(), Pattern.LITERAL).matcher(
                this).replaceAll(Matcher.quoteReplacement(replacement.toString()));
    }
 
 

 

 
public String replaceAll(String regex, String replacement) {
        return Pattern.compile(regex).matcher(this).replaceAll(replacement);
    }
 
 

 

 

참고글 : https://djusti.tistory.com/8

'new study' 카테고리의 다른 글

PROCESS vs THREAD  (0) 2019.06.30
COOKIE vs SESSION  (0) 2019.06.24
GET vs POST  (0) 2019.06.20
BufferedReader vs Scanner  (2) 2019.06.02
가변인자 테스트  (1) 2019.05.03
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함