Java/java

java :) 문자열의 문자 변경, replace() & replaceAll() 메소드 설명 ( + 정규표현식 [외부자료])

euncheol kim 2022. 5. 9. 23:13

 

 

goal

문자열 치환을 돕는 replace()와 replaceAll()을 이해하고 사용법을 숙지한다.

 

문자열 치환을 어떻게 해야할까?

  • 그냥 source에서 바꿔주지 뭐...

사실 틀렸다고 보긴 힘들다. 하지만, 필요에 의해서 많은 문자를 바꿔줘야할 때, 모든 문자열을 바꿔주기에는 큰 어려움이 있을 것이다. 아래에서 설명하겠지만 맛보기 아닌 맛보기를 보고 들어가보자. 아래 코드는 오늘 학습한 내용과 함께 더불어 작성해본 것이다.

 

 

  • StringReplace.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class StringReplace {
    public static void main(String[] args) throws IOException {
        while(true) {
            String str = "로그인 target !!";
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            System.out.printf("id를 입력하세요 : ");
            String id = reader.readLine();
            System.out.printf("pwd를 입력하세요 : ");
            String pwd = reader.readLine();

            if ((id.equals("김은철")) && (pwd.equals("1234"))) {
                str = str.replace("target", "성공");
                System.out.println(str);
                break;
            } else {
                str = str.replace("target", "실패");
                System.out.println(str);
                System.out.println("------------------------------------------");
            }
        }

    }
}
  • StringReplace.java [결과값]

image

 

* 문자열 치환, replace() 메소드


1. replace()


public String replace(char oldChar, char newChar)

String.replace(oldChar, newChar)

String의 문자 oldChar를 newChar로 변경한다.

그리고 replace()의 매력적인 요소하나가 메소드체이닝을 지원한다는 것이다. (사용예시 참고)



[1] replace() 사용예시


  • [1] StringReplace.java [일반사용]
public class StringReplace {
    public static void main(String[] args){
        String str = "Spring은 Java 백엔드를 다루기 위해 꼭 필요한 기술입니다. Spring을 잘 다루기 위해서 최선의 노력을 기울일 것입니다. Spring...!!";
        str = str.replace("Spring", "Springboot");

        System.out.println(str);
    }
}
  • StringReplace.java [결과값]

image

 

 

  • [2] StringReplaceMethodChaining.java [메소드체이닝]
public class StringReplaceMethodChaining {
    public static void main(String[] args){
        String str = "Spring은 Java 백엔드를 다루기 위해 꼭 필요한 기술입니다. Spring을 잘 다루기 위해서 최선의 노력을 기울일 것입니다. Spring...!!";
        str = str.replace("Spring", "flask").replace("Java", "python");

        System.out.println(str);
    }
}
  • StringReplaceMethodChaining.java [결과값]

image

 

 

 

2. replaceAll()


[1] replaceAll() 사용설명


public String replaceAll(String regex, String replacment)

 

String의 문자 regex를 replacment로 변경한다.

그리고 replaceAll()의 매력적인 요소하나가 메소드체이닝을 지원한다는 것이다.

 

 

※ 소스코드들의 replace()를 repalceAll()로 바꾸면 사실 똑같이 동작한다. (즉, 메소드 체이닝도 지원)따라서 replaceAll()의 소스코드 사용법은 생략한다.

 

 

* replace()메소드와 replaceAll()의 차이점


[Java] 문자열 치환(Replace) 사용법 & 예제, 참고자료 : , https://byul91oh.tistory.com/312, 개꼬[: 개발하는 꼬바리]

  • Replace.java
String a = "무궁화. 삼천리. 화려강산. 대한사람. 대한으로. 길이. 보전하세 ";
//replaceAll([정규식],[바꿀문자])
a = a.replaceAll(".", "/");
System.out.println(a);
//결과값 : /////////////////////////////////////
  • ReplaceAll.java
String a = "무궁화. 삼천리. 화려강산. 대한사람. 대한으로. 길이. 보전하세 ";
//replaceAll([정규식],[바꿀문자])
a = a.replaceAll(".", "/");
System.out.println(a);
//결과값 : /////////////////////////////////////

※ replaceAll()은 첫 번째 인자로 정규식을 받을 수 있게 설계되어있다. ReplaceAll.javareplaceAll() 첫 번째 인자는 정규식의 한 부호로써 정해진 규칙대로 작용하게 되어 우리가 예상한 값이랑 벗어나게 된 것이다.

※ 정규식은 자바뿐만 아니라 linux에서도 사용되며 개발자 사이에서 자주(?) 쓰인다.

 

 

정규식과 관련한 글 :

정규표현식 (Regex) 정리

, https://hamait.tistory.com/342, 소프트웨어 사색