Java/문자열

[Java]문자열에서 특수 문자 제거하는 방법

DevStory 2022. 8. 16.

문자열에서 특수 문자 제거하는 방법

Java에서 언어(알파벳, 한글 등) 및 숫자를 제외한 나머지 문자는 특수 문자로 간주됩니다.

 

!, @, #, $, %와 같은 문자를 특수 문자라고 합니다.

 

이번 포스팅은 문자열에서 특수 문자를 제거하는 몇 가지 방법들을 소개합니다.


ReplaceAll 메서드

모든 특수 문자를 제거하기 위해서는 String 클래스에서 제공하는 replaceAll() 메서드를 사용할 수 있습니다.

 

replaceAll() 메서드는 특정 문자열을 다른 문자열로 변경된 새로운 문자열을 반환합니다.

public String replaceAll(String regex, String replacement)

replaceAll() 메서드의 첫 번째 매개변수는 정규식이며, 두 번째 매개변수는 대체할 문자열입니다.

 

다음 예제는 문자열에 존재하는 특수 문자인 @, $, ^를 띄어쓰기로 변경합니다.

public static void main(String args[]) {
  String StringValue = "이@문자열에$특수@문자가^있다.";
  String newStringValue = StringValue.replaceAll("[@$^]", " ");

  System.out.println("[기존 문자열: StringValue]");
  System.out.println(StringValue);
  System.out.println("\n[변경된 문자열: newStringValue]");
  System.out.println(newStringValue);
}

[실행 결과]

[기존 문자열: StringValue]
이@문자열에$특수@문자가^있다.

[변경된 문자열: newStringValue]
이 문자열에 특수 문자가 있다.

예제 1. 숫자 및 문자를 제외한 모든 특수 문자 제거

숫자 및 문자(영어, 한글)를 제외한 모든 특수 문자를 변경하고 싶은 경우 ReplaceAll() 메서드의 첫 번째 매개변수에 다음 정규식을 전달합니다.

str.replaceAll("[^ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z0-9]", "");

다음 예제는 숫자 및 문자를 제외한 모든 특수 문자를 띄어쓰기로 변경합니다.

public static void main(String args[]) {
  String StringValue = "이@문자열에$특수@문자가^있다.";
  String newStringValue = StringValue.replaceAll("[^ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z0-9]", " ");

  System.out.println("[기존 문자열: StringValue]");
  System.out.println(StringValue);
  System.out.println("\n[변경된 문자열: newStringValue]");
  System.out.println(newStringValue);
}

[실행 결과]

[기존 문자열: StringValue]
이@문자열에$특수@문자가^있다.

[변경된 문자열: newStringValue]
이 문자열에 특수 문자가 있다

예제 2. 숫자 및 문자 그리고 일부 특수 문자를 제외

숫자 및 문자 그리고 일부 특수 문자를 제외하고 모든 특수 문자를 변경하고 싶을 수 있습니다.

 

예를 들어, 쉼표(,) 또는 마침표(.) 그리고 띄어쓰기를 제외한 모든 특수 문자를 변경하고 싶습니다.

 

ReplaceAll() 메서드의 첫 번째 매개변수에 다음 정규식을 전달합니다.

str.replaceAll("[^ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z0-9,. ]", "");

다음 예제는 문자열에서 숫자 및 문자, 쉼표, 마침표, 띄어쓰기를 제외한 모든 특수 문자를 빈 값으로 변경합니다.

public static void main(String args[]) {
  String StringValue = "따@라#서, 어쩌구... 저쩌구...";
  String newStringValue = StringValue.replaceAll("[^ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z0-9,. ]", "");

  System.out.println("[기존 문자열: StringValue]");
  System.out.println(StringValue);
  System.out.println("\n[변경된 문자열: newStringValue]");
  System.out.println(newStringValue);
}

[실행 결과]

[기존 문자열: StringValue]
따@라#서, 어쩌구... 저쩌구...

[변경된 문자열: newStringValue]
따라서, 어쩌구... 저쩌구...
반응형

댓글