본문 바로가기

JAVA/JAVA

[JAVA] 특정 특수문자를 제외한 나머지 특수문자만 제거 하기

[JAVA] 특정 특수문자를 제외한 나머지 특수문자만 Replace 하기

 

 

특수문자 전체를 제외하는 방법은

아래처럼 "\\p{Punct}" 정규식으로 간단하게 제거를 할 수있습니다.

1. 특수문자 제거하기

// 예시
String punctStr = "a!b#c@d}!%^#"
replaceAll("\\p{Punct}", "");


// 결과 : abcd 

 

이번에, 특정 특수문자를 제외한, 나머지의 특수문자만 제거해야되는 경우가 생겨서 아래와 같은 방법을 사용했습니다.

 

    
    // 특수문자 정의 ARRAY
    String[] puncts = {"!", "\"", "#", "$", "%", "&", "(", ")", "{", "}", "@", "`", "*", ":", "+",
        ";", "-", ".", "<", ">", ",", "^", "~", "|", "'", "[", "]"};
        
    punctStr = "a!b@c#d^!@12&3+4"
    String result = "";
    String[] punctArr = ["+", "@"] // 특정 특수문자 Arr
    // 특정 특수문자 제외한, 특수문자 제거
    for (String item : puncts) {
      if (punctStr.contains(item)) {
      } else {
        if (item.equals("*") || item.equals("+") || item.equals("$") || item.equals("|")) {
          item = "[" + item + "]";
        }
        if (item.equals("(") || item.equals(")") || item.equals("{") || item.equals("}")
            || item.equals("^") || item.equals("[") || item.equals("]")) {
          item = "\\" + item;
        }
        result = punctStr.replaceAll(item, "");
      }
    }
    
    // 결과 : ab@cd12&34
    

 

특정 특수문자를 위와 같이 고정적인 방식이라면 위의 방법처럼 하지 않아도 괜찮겠지만,

동적으로 특수문자가 다른경우에, 위와 같이 각각의 특수문자를 제거해주는 방법으로 진행되었습니다.

 

자바에서 각 특수문자마다, 문자열 인식하게하는 문자열들이 다르기 때문에 ( \\ , [ ] , 등.. ) 위와 같이 처리하면

필요한 특수문자 외에 특수문자만 제거해줄 수 있습니다.