072DATA

자바 문자열 대체 메소드(replaceAll) 본문

BackEnd/JAVA

자바 문자열 대체 메소드(replaceAll)

0720 2023. 12. 11. 16:29

replaceAll은 문자열 메소드로 

 

replace와 같은 기능을 하지만 차이가 명확하다

 

대체로 문자를 문자로 대체할 때 replace를 사용하는데

 

프로그래밍에서는 경우의 수가 많기에 상황에 맞는 문자를 다른 문자로 변경할 줄 알아야 한다.

 

그런 점에서 replaceAll이 유용하다고 할 수 있는데 replaceAll의 표현식은 굉장히 다양하다

 

간단한 표현식 5개를 알아보세~

 

1. 숫자(\\d):

    //숫자를 특정 문자로 대체 (특정 문자는 "X"를 사용하겠소)
    String str = "Hello, 123!";
    
    // \\d는 0부터 9까지의 숫자를 의미하고 따라서 숫자들을 전부 특정 문자로 대체한다.
    
    String con = str.replaceAll("\\d", "X");
    
    System.out.println(con); 
    
    // 출력 결과는 "Hello, XXX!"

2. 공백(\\s):

    //공백을 특정 문자로 대체(특정 문자는 "_"를 사용하겠소)

    str = "Replace spaces with underscores";

    // \\s는 공백 문자에 해당함(띄어쓰기) 따라서 공백을 특정 문자로 대체한다

    con = str.replaceAll("\\s", "_");

    System.out.println(con); 

    // 출력결과는 "Replace_spaces_with_underscores"

만약 여러개의 공백을 대체하고 싶다면 "\\s+"로 사용하면 된다


3. 알파벳([a-zA-Z]) 또는 한글 ([가-힣])

    영문 알파벳이 아닌 문자를 특정 문자로 바꾸기

    text = "Replace non-alphabetic characters";

    // [^a-zA-Z]는 영문 알파벳이 아닌 모든 문자를 나타냄

    result = text.replaceAll("[^a-zA-Z]", "X");

    System.out.println(result); 

    // 출력: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

여기서 한글만 나타내고 싶다면 [^가-힣]를 

자음만 출력한다면 [^ㄱ-ㅎ]를 모음만 출력한다면 [^ㅏ-ㅣ]를 사용한다

추가로 포함된 글자에서 특정 문자만 제외하고 출력하는 방법으로는

[가-힣&&[^ㅏ]]을 사용해 한글만 출력하는 문자열에서 "ㅏ"만 제외한 문자열을 가져올 수 있음

&&[^ ]replaceAll을 사용할 때 어떤 상황이든 사용 가능하다


4. 문자 그룹 ((abc|123)):

    // "abc" 또는 "123"을 "X"로 바꾸기
    
    text = "Replace abc or 123";
    
    // (abc|123)은 "abc" 또는 "123"을 나타냄 "abc" 또는 "123"을 "X"로 바꿉니다.
    
    result = text.replaceAll("(abc|123)", "X");
    
    System.out.println(result); 
    
    // 출력 결과는 "Replace X or X"

만약 "123", 혹은 "abc"와 같이 한 문자 그룹만 지우고 싶으면 

' | ' 를 제거하고 하나의 문자 그룹만 포함시키면 된다

 


5. 반복 (+, *, {n}, {n,}, {n,m}):

    //특정 문자가 한 번 이상 반복되는 부분을 대체 문자로 바꾸기

    text = "Replace repeated characters";

    // a+는 "a"가 한 번 이상 반복되는 패턴을 나타냅니다. "a"가 반복되는 부분을 "X"로 바꿉니다

    result = text.replaceAll("a+", "X");

    System.out.println(result); 
    
    // 출력 결과는 "ReplXce repeXted chXrXcters"
  • *: 0번 이상의 반복 (즉, 없어도 되고 여러 번 나와도 됨)
  • {n}: 정확히 n번 반복
  • {n,}: n번 이상 반복
  • {n,m}: n번부터 m번까지 반복

6. replaceAll("[대체 하고싶은 문자, 대체할 문자]"

 

만약 여러개의 문자들을 특정 문자나 공백등으로 대체 해야할 때

 

    String str = "agoioweqmu"; //주어진 문자열
    String str2	= my_string.replaceAll("[aosq]", ""); 
    //주어진 문자열에서 replaceAll을 사용한 뒤 "[대체 하고싶은 문자, 대체할 문자]"를 입력
    
   	// 출력 결과 = giwemu

 


 

끝으로 각 표현식을 이해하면서 여러 상황에 맞게 변경하여 사용하면 더더욱 효과적으로 코딩을 할 수 있을것 같다.

특히 [가-힣&&[^ㅏ]] 같은 표현식은 비속어 처리같은 것에 사용할 수 있지 않을까 하고 코린이는 상상한다. ㅈㅈ;

'BackEnd > JAVA' 카테고리의 다른 글

자바 배열 정렬 메소드 (Arrays.sort)  (1) 2023.12.11
자바 배열 복사 (Arrays.copyOf)  (1) 2023.12.08
자바 문자열 관련 메소드 (2)  (1) 2023.12.05
자바 문자열 관련 메소드(1)  (2) 2023.12.03
2023-11-29  (0) 2023.11.29