Java에서 문자열에 특수 문자가 있는 경우 특수 문자만 제거하는 방법을 알아보겠습니다.
특수 문자란 ! # % $ ^ & 처럼 생긴 문자를 특수 문자라고 합니다.
문자열에 이러한 특수 문자가 포함되어 있는경우 예상치 못한 결과과 나오기도 합니다.
특스 문자를 제거하기 위해서 replaceAll 메서드를 사용하겠습니다.
replaceAll
replaceAll 메서드는 대상 문자열에서 특정 문자열을 원하는 다른 문자열로 변경해줍니다.
기본적인 작성 방법은 다음과 같습니다.
대상 문자열.replaceAll (특정 문자열, 치환 문자열)
replaceAll의 자세한 사용 방법은 아래를 참조해주세요.
링크링크링크
replaceAll 메서드의 특정 문자열에는 정규식 표현으로도 문자를 검색할 수도 있습니다.
샘플을 보면서 특수 문자를 제거하는 방법을 보겠습니다.
특수 문자 지정해서 제거
replaceAll에 특수 문자를 직접 지정해서 제거하는 샘플입니다.
public class Program
{
public static void main(String[] args) {
String strVal = "특#수 문^자 제$거!하%기 샘*플";
String resultVal = strVal.replaceAll("[#^$!%*]", " ");
System.out.println("【변경전 문자열】");
System.out.println(strVal);
System.out.println();
System.out.println("【변경후 문자열】");
System.out.println(resultVal);
}
}
결과
【변경전 문자열】
특#수 문^자 제$거!하%기 샘*플
【변경후 문자열】
특 수 문 자 제 거 하 기 샘 플
replaceAll 메서드의 검색하고 싶은 특수 문자를 직접 정규식 표현으로 직접 지정했습니다.
지정한 특수 문자 #^$!%*를 공백 스페이스로 치환하도록 하고 있습니다.
이 방법의 장점은 지정한 특수 문자만 공백 스페이스로 치환해주는 것입니다.
단점으로는 제거하고 싶은 특수 문자가 추가되는 경우 정규식 표현에 직접 추가해야합니다.
즉, 소스 수정이 발생하게 됩니다.
문자 및 숫자 이외의 문자를 모두 제외
이번에는 문자 그리고 숫자를 제외한 모든 특수 문자를 일괄로 제외하는 방법을 알아보겠습니다.
한글, 숫자, 영어이외의 모든 문자를 특수 문자로 취급해 제거하는 방법입니다.
샘플을 보도록 하겠습니다.
public class Program
{
public static void main(String[] args) {
String strVal = "특#수 문^자 제$거!하%기 샘*플1 입니다. thank you";
String resultVal = strVal.replaceAll("[^ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z0-9,. ]", " ");
System.out.println("【변경전 문자열】");
System.out.println(strVal);
System.out.println();
System.out.println("【변경후 문자열】");
System.out.println(resultVal);
}
}
결과
【변경전 문자열】
특#수 문^자 제$거!하%기 샘*플1 입니다. thank you
【변경후 문자열】
특 수 문 자 제 거 하 기 샘 플1 입니다. thank you
한글, 숫자, 영어를 제외한 모든 문자가 제거되었습니다.
사용한 정규식 표현을 보겠습니다.
대상문자열.replaceAll(“[^ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z0-9,. ]”, ” “);
한글, 숫자, 영어 대소문자 그리고 마침표 이외의 모든 문자는 공백 스페이스로 치환 하도록 하고 있습니다.
만약 공백 스페이스가 아니라 제거된 부분의 문자열을 붙이고 싶은 경우에는 ” “를 “”로 변경하면 됩니다.
장점으로 지정한 글자 이외의 문자는 모두 제거하기 때문에 편리합니다.
단점으로는 한자나 다른 나라의 언어가 포함되어 있는 경우에도 특수 문자로 인식해 제거합니다.
특수 문자로 인식하지 않도록 정규식에 추가해주면 대응은 가능하지만 다른 나라의 언어일 경우에는 조금 복잡해 질 수도 있으니 주의해야합니다.
댓글