String변수나 배열 같은 곳에 많은 양의 데이터들이 들어가 있을 경우 자신이 바꾸고자 하는 값만 골라서 바꾸기가 쉽지않다.
이럴 때 유용하게 쓰일 수 있는 함수가 바로 Replace이다.
문자열 치환 함수 Replace, ReplaceAll, ReplaceFirst 함수의 사용법에 대해서 알아보자.
String replace(CharSequnce target, CharSequence replacement)
자신이 바꾸고싶은 문자로 문자열을 치환시켜주는 함수
-> [변수].replace([기존문자],[바꿀문자])
String a = "무궁화 삼천리 화려강산 대한사람 대한으로 길이 보전하세 ";
a= a.replace("대한", "민국");
System.out.println(a);
//결과값 : 무궁화 삼천리 화려강산 민국사람 민국으로 길이 보전하세
자신이 바꾸고싶은 문자로 문자열을 전부 치환시켜주는 기능
Replace와 결과는 같지만, 차이점이 분명히 있다.
Replace는 첫번째 값으로 바꿀 문자열을 입력받고, ReplaceAll은 첫번째 인자값으로 정규식이 들어간다.
따라서 Replace는 특수문자로도 치환이 되는데 반하여 ReplaceAll은 특수문자로 치환이 어렵다.
replaceAll([정규식],[바꿀문자])
String a = "무궁화 삼천리 화려강산 대한사람 대한으로 길이 보전하세 ";
a= a.replaceAll("대한", "민국");
System.out.println(a);
//결과값 : 무궁화 삼천리 화려강산 민국사람 민국으로 길이 보전하세
String a = "무궁화. 삼천리. 화려강산. 대한사람. 대한으로. 길이. 보전하세 ";
a = a.replace(".", "/");
System.out.println(a);
//결과값 : 무궁화/ 삼천리/ 화려강산/ 대한사람/ 대한으로/ 길이/ 보전하세
. 을 /로 치환할 경우 replace함수는 '.' 을 '/'로 정상적으로 바꾸어준다.
하지만!
String a = "무궁화. 삼천리. 화려강산. 대한사람. 대한으로. 길이. 보전하세 ";
a = a.replaceAll(".", "/");
System.out.println(a);
//결과값 : /////////////////////////////////////
replaceAll은 문자열 전체가 치환되는 것을 확인할 수 있다.
.(마침표)가 정규식으로 모든 문자를 의미하기 때문에 나타난 현상이다.
자신이 바꾸고 싶은 문자열이 처음으로 해당할 때만 치환시켜주는 기능을 한다.
replaceFirst([기존문자],[바꿀문자])
String a = "무궁화 삼천리 화려강산 대한사람 대한으로 길이 보전하세 ";
a= a.replaceFirst("대한", "민국");
System.out.println(a);
//결과값 : 무궁화 삼천리 화려강산 민국사람 대한으로 길이 보전하세