C# - 문자열에서 특수문자 제거

문자열에서 $, # 등의 특수문자를 제거하는 방법을 소개합니다.

1. 정규표현식(Regex)으로 특수 문자 제거

Regex.Replace(string, pattern, replacement)는 string에서 정규표현식 pattern에 해당하는 문자열을 찾아서 모두 replacement로 변경합니다.

아래 예제에서 [^a-zA-Z0-9가-힣\s]는 영어, 한국어, 숫자, 띄어쓰기를 제외한 다른 문자에 해당하는 패턴입니다. 이 패턴으로 문자들을 찾아서 빈 문자열로 변환하여 제거합니다.

using System;
using System.Text.RegularExpressions;

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            string str = "AA**BB#@$CC 가나다-123";

            string result = Regex.Replace(str, @"[^a-zA-Z0-9가-힣\s]", "");
            Console.WriteLine(result);
        }
    }
}

Output:

AABBCC 가나다123

만약 공백(white space)도 제거하고 싶다면, 패턴에서 white space에 해당하는 \s를 제거하시면 됩니다. 즉, [^a-zA-Z0-9가-힣] 처럼 사용하시면 됩니다.

정규표현식에서 ^는 not의 의미입니다. [a-z]가 a에서 z에 해당하는 문자를 의미한다면, [^a-z]는 a-z에 해당하지 않는 문자를 의미합니다.

2. 일본어를 제외한 다른 문자 제거

위와 동일한 방식으로, 아래와 같이 일본어 외에 다른 언어 및 문자들을 정규표현식 패턴으로 찾아서 빈 문자열로 변환하면 제거가 됩니다.

string str = "AA**BB#@$CC 가나다-123文字列から数字のみを抽出する方法";

string result = Regex.Replace(str, @"[^ぁ-ゔァ-ヴー々〆〤一-龥]", "");
Console.WriteLine(result);

Output:

文字列から数字のみを抽出する方法

만약 숫자와 영어, 띄어쓰기도 허용한다면, 아래와 같이 패턴을 구현하면 됩니다.

string result = Regex.Replace(str, @"[^a-zA-Z0-9\sぁ-ゔァ-ヴー々〆〤一-龥]", "");

3. 영어, 숫자를 제외한 다른 문자 제거

아래 예제에서 [^a-zA-Z0-9\s] 패턴 처럼, 영어와 숫자를 제외한 다른 문자들을 찾아서 빈 문자열로 변환할 수 있습니다.

string str = "This** is#@$ an Example 가나다-123文字列から数字のみを抽出する方法";

string result = Regex.Replace(str, @"[^a-zA-Z0-9\s]", "");
Console.WriteLine(result);

Output:

This is an Example 123
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha