[C#] 문자열에서 숫자 찾기 및 추출

문자열에 포함 된 숫자를 찾아 추출해야합니다.

예를 들어 다음 문자열에서

string test = "1 test"
string test1 = " 1 test"
string test2 = "test 99"

어떻게해야합니까?



답변

문자열을 통해 사용 Char.IsDigit

string a = "str123";
string b = string.Empty;
int val;

for (int i=0; i< a.Length; i++)
{
    if (Char.IsDigit(a[i]))
        b += a[i];
}

if (b.Length>0)
    val = int.Parse(b);


답변

\d+정수의 정규식입니다. 그래서

//System.Text.RegularExpressions.Regex
resultString = Regex.Match(subjectString, @"\d+").Value;

의 숫자가 처음 포함 된 문자열을 반환합니다 subjectString.

Int32.Parse(resultString) 그런 다음 번호를 알려줍니다.


답변

전화 번호를 정리하여 숫자 만 얻는 방법은 다음과 같습니다.

string numericPhone = new String(phone.Where(Char.IsDigit).ToArray());


답변

정규식 사용 …

Regex re = new Regex(@"\d+");
Match m = re.Match("test 66");

if (m.Success)
{
    Console.WriteLine(string.Format("RegEx found " + m.Value + " at position " + m.Index.ToString()));
}
else
{
    Console.WriteLine("You didn't enter a string containing a number!");
}


답변

구두점없이 전화 번호를 얻는 데 사용하는 것 …

var phone = "(787) 763-6511";

string.Join("", phone.ToCharArray().Where(Char.IsDigit));

// result: 7877636511


답변

Regex.Split은 문자열에서 숫자를 추출 할 수 있습니다. 문자열에서 찾은 모든 숫자를 얻습니다.

string input = "There are 4 numbers in this string: 40, 30, and 10.";
// Split on one or more non-digit characters.
string[] numbers = Regex.Split(input, @"\D+");
foreach (string value in numbers)
{
    if (!string.IsNullOrEmpty(value))
    {
    int i = int.Parse(value);
    Console.WriteLine("Number: {0}", i);
    }
}

산출:

번호 : 4 번호 : 40 번호 : 30 번호 : 10


답변

Linq버전은 다음과 같습니다 .

string s = "123iuow45ss";
var getNumbers = (from t in s
                  where char.IsDigit(t)
                  select t).ToArray();
Console.WriteLine(new string(getNumbers));