[JAVA]문자열 붙여서 출력하기 replaceAll

IT 정보/java 2024. 12. 11. 09:20
반응형

 

강호의 도리

 

replace(regex, replacement); 

 

 

 

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        String b = sc.next();
    }
}

 

 

조건 1. 문자열 str1, str2가 공백으로 구분되어 입력으로 주어진다.

 

조건 2. 입출력 예시와 같이 공백인 부분을 없애서 출력해라

 


우선 한번 a,b를 charAt()로 만들어 공백인 공간은 null로 표시되어 지는지 확인해 보자

 

이렇게 null이 아닌 빈공간으로 된다.

 

그러면 더 간단해진다

 

a의 인덱스[5]가 공백인데 for loop를 돌려 해당부분이 공백이 아닐 때만 answer에 값을 저장하게 하면 끝!

 

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = "apple pen";
        String b = "Hello World!";
        String answer = "";


        for (int i = 0; i < a.length(); i++) {
            char temp = a.charAt(i);
            System.out.println(temp);
            if (temp != ' ') {
                answer += temp;
            }
        }
        System.out.println(answer);


    }
}

 

근데 이거보다 더 간단한게 있는데 그게 바로 replaceAll이다

 

해당 메소드 호출은

 

객체.replace(regex, replacement); 를 사용하면 바로 해결되는 문제이다.

 

regex (정규 표현식)

  • : regex는 "regular expression"의 약자로, 정규 표현식을 의미합니다.
    • 문자열 패턴을 표현하기 위한 특별한 형식입니다.
    • 예를 들어:
      • "\\d+" → 하나 이상의 숫자를 찾습니다.
      • "[a-zA-Z]+" → 하나 이상의 알파벳 문자를 찾습니다.
      • "\\s" → 공백 문자(스페이스, 탭 등)를 찾습니다.
  • 역할:
    • replaceAll() 메서드에서 regex는 변경할 대상(패턴)을 정의합니다.
    • 문자열 내에서 이 정규 표현식과 일치하는 모든 부분을 찾아 replacement로 대체합니다.

2. replacement (대체 문자열)

  • : replacement는 정규 표현식과 일치하는 부분을 무엇으로 바꿀지 지정하는 대체 문자열입니다.
  • 역할:
    • regex와 일치하는 모든 부분을 replacement 값으로 교체합니다.
    • 예를 들어:
      • str.replaceAll("\\d+", "X") → 문자열에서 숫자를 모두 "X"로 바꿉니다.
      • str.replaceAll(" ", "_") → 문자열에서 공백을 모두 밑줄("_")로 바꿉니다.

 


String resultA = a.replaceAll(" ", "");

이런식으로 regex 에는 " " 공백을넣고 대체문자열에는 공백이 없는 ""을 넣게되면

 

resultA라는 객체에 a라는 객체에서의 공백을 제외한 문자가 전부 출력된다.

 

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        String b = sc.next();
        String resultA = a.replaceAll(" ","");
        String resultB = b.replaceAll(" ","");
        System.out.print(resultA);
        System.out.print(resultB);
    }
}



 

하지만 메서드 호출에 의존만 해서는 결코 좋은 개발자가 될 수 없을거 같다.

 

물론 현업에서는 저렇게 메서드호출을 많이 이용하겠지만 코딩테스트를 공부할때만큼은 내가 배웠던 것들을 최대한 활용하여 푸는 연습 후에 메서드 호출을 알아보도록 하자

 

그럼 20000

 

반응형