Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 문자열의 알파벳이 아닌 모든 문자 제거하는 방법

Java 프로그래밍을 하다 보면 문자열에 포함된 숫자, 특수문자, 공백 등 알파벳이 아닌 문자들을 제거하고 순수한 영문자만 남겨야 하는 경우가 종종 있습니다. 이 글에서는 split() 메서드와 정규 표현식을 활용하여 이를 손쉽게 처리하는 방법을 예제와 함께 소개합니다.

split() 메서드란?

String 클래스의 split() 메서드는 구분자(delimiter) 역할을 하는 문자열 값을 인수로 받아, 해당 구분자를 기준으로 문자열을 잘라 토큰(단어) 배열로 반환합니다.

예를 들어 공백(" ")을 구분자로 전달하여 문자열을 분리하면, 이 메서드는 두 공백 사이의 단어를 하나의 토큰으로 간주하고 현재 문자열에서 공백 사이에 위치한 단어들로 이루어진 배열을 반환합니다.

만약 문자열에 지정한 구분자가 존재하지 않는다면, 이 메서드는 전체 문자열을 하나의 요소로 갖는 배열을 반환합니다.

정규 표현식 "\\W+"의 의미

정규 표현식 "\\W+"는 단어 문자(알파벳, 숫자, 밑줄)를 제외한 모든 문자, 즉 구두점, 공백, 특수 기호 등 비알파벳 문자와 일치합니다. 따라서 이 패턴을 구분자로 사용하면 문자열이 알파벳이 아닌 문자가 나타날 때마다 분할됩니다.

알파벳이 아닌 문자 제거 절차

문자열에서 알파벳이 아닌 모든 문자를 제거하려면 다음 단계를 따르세요.

  • 처리할 대상 문자열을 준비합니다.

  • String 클래스의 split() 메서드에 위에서 설명한 정규 표현식을 매개변수로 전달하여, 문자열을 String 배열로 분리합니다.

  • 이렇게 하면 문자열이 알파벳이 아닌 문자마다 분할되고, 모든 토큰이 문자열 배열로 반환됩니다.

  • 얻어진 배열의 모든 요소를 하나의 문자열로 연결(join)합니다.

예제 코드

import java.util.Scanner;
public class RemovingAlphabet {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter your name: ");
        String str = sc.nextLine();
        String[] stringArray = str.split("\\W+");
        String result = new String();
        for(int i = 0; i < stringArray.length; i++){
            result = result + stringArray[i];
        }
        System.out.println("Result: " + result);
    }
}

실행 결과

Enter your name:
Krishna ^% Kasyap*@#
Result: KrishnaKasyap

위 실행 결과에서 볼 수 있듯이, 입력 문자열에 포함되어 있던 특수문자(^%, *@#)와 공백이 모두 제거되고 알파벳만 깔끔하게 연결된 것을 확인할 수 있습니다.

더 간단한 대안: replaceAll() 메서드

split() 후 다시 문자열을 합치는 과정 없이, replaceAll() 메서드를 사용하면 한 줄로 동일한 결과를 얻을 수 있습니다.

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

위 코드에서 정규 표현식 "[^a-zA-Z]"는 영문 알파벳 대소문자를 제외한 모든 문자를 의미하며, 이를 빈 문자열("")로 치환함으로써 숫자와 특수문자까지 완전히 제거할 수 있습니다. 상황에 따라 두 방법 중 더 적합한 것을 선택하여 사용하시기 바랍니다.