String 또는 배열에서 원하는 값만 골라서 바꾸고 싶을 때 사용하기 좋은 것이 바로 replace() 메서드이다.
문자열 치환 메서드에는 크게 3가지가 있다.
1. replace()
replace() 메서드는 문자열에서 변경하고 싶은 문자를 검색하고 지정된 문자로 변경하고 새 문자열을 반환한다.
public class Main {
public static void main(String[] args) {
String s = "one. 2. one. 2.";
s = s.replace("one","1");
Integer.parseint(s);
System.out.println(s); //결과: 1. 2. 1. 2.
}
}
위의 예제에서 나온 결과 값을 보면, s안의 모든 "one"이 "1"로 바뀌었다.
2. replaceFirst()
replace()와 replaceFirst()의 차이점은 replace()는 String안에 지정된 글자가 모두 바뀐다면
replaceFirst()는 지정된 글자가 발견된 첫 번째 경우만 바뀐다.
public class Main {
public static void main(String[] args) {
String s = "one. 2. one. 2.";
s = s.replaceFirst("one","1");
System.out.println(s); //결과: 1. 2. one. 2.
}
}
위의 예제와 같이 String s안에 "one"은 두 개이지만 첫 번째 "one"만 "1"로 바뀌고 뒤의 "one"은 변하지 않았다.
3. replaceAll()
replace()와 replaceAll()의 결과 값은 같을 수 있다.
하지만 차이점은 있다. replace()는 첫번째 값으로 바꿀 문자열을 입력받는 대신 첫 번째 인자 값으로 정규식이 들어간다. 그래서 replace()는 특수문자로도 치환이 되는데 반면 replaceAll()은 특수문자로 치환이 어렵다.
노트 - 정규식이란?
정규표현식은 문자열 처리하는 방법 중의 하나로 특정한 조건의 문자를 '검색'할 때 또는 '치환'하는 과정을 간편하게 처리할 수 있게 해 준다.
대표적인 정규표현식
표현식 설명 ^ 문자열의 시작([]대괄호 안에서는 부정을 의미) $ 문자열의 종료 . 임의의 한 문자 (문자의 종류 가리지 않음)
public class Main {
public static void main(String[] args) {
String s = "one. 2. one. 2.";
s = s.replace(".","/");
System.out.println(s); //결과: one/ 2/ one/ 2/
}
}
. 을 /로 치환할 경우 replace()는 정상적으로 바꾸어준다. 하지만,
public class Main {
public static void main(String[] args) {
String s = "one. 2. one. 2.";
s = s.replaceAll(".","/");
System.out.println(s); //결과: ///////////////
}
}
replaceAll() 같은 경우 문자열 전체가 /로 치환된다.
. 가 정규식으로 모든 문자를 의미하기 때문에 나타난 현상이다.
참고
정규 표현식이란? - 생활코딩
정규표현식 정규표현식(正規表現式, Regular Expression)은 문자열을 처리하는 방법 중의 하나로 특정한 조건의 문자를 '검색'하거나 '치환'하는 과정을 매우 간편하게 처리 할 수 있도록 하는 수단이
opentutorials.org
'코딩 문제 > 알고리즘' 카테고리의 다른 글
StringBuilder란? StringBuilder 개념과 사용법 (0) | 2022.06.11 |
---|---|
[자료구조] LinkedList 사용법 & 예제 (Java) (0) | 2022.03.17 |
[자료구조] ArrayList 사용법 & 예제 (0) | 2022.03.16 |
[자료구조] Map - HashMap, TreeMap, LinkedHashMap (0) | 2022.03.11 |
댓글