티스토리 뷰
https://www.acmicpc.net/problem/2941
백준 알고리즘 문제를 풀다가 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);
}
|
'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 |
댓글