[JAVA] 자바 문자열 치환 방법 raplace, replaceAll 차이점
- 언어/Java
- 2020. 5. 23.
java replaceAll 문자열 치환방법에 대해 알아보겠습니다.
개발을 하다보면 replace를 쓰는 경우도 종종 있지만 replaceAll() 을 쓰는경우가 많습니다.
어떤형태의 문자열이 올지 모르는 경우가 종종 있기 때문입니다.
그래서 정규표현식을 이용하여 사용하는 경우가 많습니다.
replace와 replaceAll 은 사용하는 용도가 약간은 다르니 용도에 맞게 사용하시면 됩니다.
String replace(CharSequence target, CharSequence replacement)
replace(찾을문자열, 바꿀문자열)
package main.java;
public class test2 {
public static void main(String[] args) {
String str = "I have a pen. I have an apple. I have pineapple";
str = str.replace("I", "You"); // I 문자를 YOU로 변경
System.out.println(str);
// 결과 : You have a pen. You have an apple. You have pineapple
}
}
결과 : You have a pen. You have an apple. You have pineapple
알파벳 i -> You 로 치환하였습니다.
replace 메소드는 문자열에서 변경하고 싶은 문자열을 찾아 치환합니다.
String replaceAll(String regex, String replacement)
replaceAll(정규식 또는 기존문자, 대체문자)
package main.java;
public class test2 {
public static void main(String[] args) {
String str = "자동차 가격은 300,000,000원 입니다.";
str = str.replaceAll("[0-9]", "A");
System.out.println(str); // 결과 : 자동차 가격은 AAA,AAA,AAA원 입니다.
String str2 = "자동차 가격은 300,000,000원 입니다.";
str2 = str2.replaceAll("자동차", "CAR");
System.out.println(str2); // 결과 : CAR 가격은 300,000,000원 입니다.
}
}
첫번째 str 의 결과 값 : 자동차 가격은 AAA,AAA,AAA원 입니다.
정규식 [0-9](숫자만)을 사용하여 숫자는 모두 A로 치환하였습니다.
두번째 str2 의 결과 값 : CAR 가격은 300,000,000원 입니다.
정규식이 아닌 문자를 입력하였을때에는 replace와 같은 기능을 가지고 있습니다.
replaceAll 메소드는 문자열에서 특정 문자를 다른문자로 전체 치환하는 메소드입니다.
replace와 replaceAll의 차이점을 한곳에서 비교해보겠습니다.
package main.java;
public class test2 {
public static void main(String[] args) {
String str = "안녕하세요. 반가워요. 또 놀러오세요.";
str = str.replace(".", "^^");
System.out.println(str); // 결과 : 안녕하세요^^ 반가워요^^ 또 놀러오세요^^
String str2 = "안녕하세요. 반가워요. 또 놀러오세요.";
str2 = str2.replaceAll(".", "^^");
System.out.println(str2); // 결과 : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}
}
같은문자열로 비교해보니 비교가 편합니다.
replace는 .(점)을 문자로 인식하여 점 세개를 ^^ 웃는모양으로 치환하였습니다.
replaceAll은 .(점)을 정규식으로 인식하여 .(점)은 정규식으로 모든문자를 표현합니다.
그래서 str2의 결과값은 모든 문자를 ^^ 웃는 얼굴로 치환하였습니다.
결과값으로 보니 차이점이 확실히 나오네요.
replaceFirst(String regex, String replacement)
package main.java;
public class test2 {
public static void main(String[] args) {
String str = "사과. 사과. 포도.";
str = str.replaceFirst("사과", "수박");
System.out.println(str); // 결과 : 수박. 사과. 포도
}
}
문자열에서 처음으로 찾은 문자 하나만 변경처리합니다.
JAVA에서는 공백제거하는 대표적인 trim() 메소드가 있습니다.
trim() 메소드는 문자열의 앞뒤만 공백제거 하지만 replaceAll은 모든 공백을 제거할 수 있습니다.
괄호 [ ] 로 특수문자로 인식해주는 방법입니다.
package main.java;
public class test2 {
public static void main(String[] args) {
String str = "안녕하세요? * + $ | 입니다.";
System.out.println(str.replaceAll("[*]", "A"));
// 안녕하세요? A + $ | 입니다.
System.out.println(str.replaceAll("[+]", "A"));
// 안녕하세요? * A $ | 입니다.
System.out.println(str.replaceAll("[$]", "A"));
// 안녕하세요? * + A | 입니다.
System.out.println(str.replaceAll("[|]", "A"));
//안녕하세요? * + $ A 입니다.
}
}
소괄호, 중괄호, 대괄호, ^ 는 앞에 \\를 붙여야 사용이 가능합니다.
package main.java;
public class test2 {
public static void main(String[] args) {
String str = "이것은 컴퓨터 (computer) 입니다..";
System.out.println(str.replaceAll("\\(", "★"));
// 이것은 컴퓨터 ★computer) 입니다..
/*
\\를 붙여줘야 하는 특수문자입니다.
( \\(
) ⇒ \\)
{ ⇒ \\{
} ⇒ \\}
^ ⇒ \\^
[ ⇒ \\[
] ⇒ \\]
*/
}
}
'언어 > Java' 카테고리의 다른 글
[JAVA] 자바 equalsIgnoreCase 문자열 비교 방법 (0) | 2020.06.07 |
---|---|
[JAVA]자바 문자열 비교 equals(), == 사용법 및 차이점 (0) | 2020.05.24 |
[JAVA] 자바 문자열 앞뒤 공백제거 Trim() 사용법 (0) | 2020.05.22 |
[JAVA] 자바 상수(Constant) 사용법! 하드코딩 하지말자 (0) | 2020.05.20 |
[JAVA] 자바 특정 문자열 포함 확인 및 찾기(contains/indexof/matches) (0) | 2020.05.19 |