C# - 문자열에서 숫자만 추출하는 방법

문자열에서 숫자(정수)만 추출하는 방법을 소개합니다.

1. 정규표현식(Regex)를 이용한 방법

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

아래 예제에서 정규표현식 [^0-9]는 0에서 9사이의 숫자가 아닌 문자를 의미하며, replacement는 빈문자열이므로, 숫자가 아닌 문자열을 모두 제거하게 됩니다.

using System;
using System.Text.RegularExpressions;

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

            string str = "aaa1234, ^&*2233pp";

            string result = Regex.Replace(str, @"[^0-9]", "");
            Console.WriteLine(result);
        }
    }
}

Output:

12342233

참고로, 정규표현식 [^0-9]는 간단히 \D로 쓸 수 있습니다. 둘다 동일한 의미입니다.

string str = "aaa1234, ^&*2233pp";
string result = Regex.Replace(str, @"\D", "");
Console.WriteLine(result);

Output:

12342233

2. for문을 이용한 방법

반복문을 이용하여 문자열의 모든 문자들을 순회하면서 숫자만 찾아서 문자열을 만들 수 있습니다.

아래 예제에서 문자는 char 타입으로 읽었고, ASCII를 이용하여 '0' 이상, '9' 이하의 문자들만 string에 추가하였습니다.

using System;

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

            string str = "aaa1234, ^&*2233pp";

            string result = "";
            for (int i = 0; i < str.Length; i++) {
                char ch = str[i];
                if ('0' <= ch && ch <= '9') {
                    result += ch;
                }
            }
            Console.WriteLine(result);
        }
    }
}

Output:

12342233
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha