2012-05-05 6 views
5

현재 프로젝트에서 나는 부분 문자열로 작업해야하며 문자열에서 숫자를 추출하는 쉬운 방법이 있는지 궁금합니다.문자열에서 특정 숫자 얻기

예 : 내가 가진이 같은 문자열 : 12 텍스트 텍스트 7 텍스트

내가 나갈 사용할 수있게하려면

첫 번째 숫자 설정하거나 두 번째 번호를 설정합니다. 그래서 번호 집합 1을 요청하면 답례로 12를 얻을 것이고 숫자 집합 2를 요청하면 7을 얻을 것입니다.

감사합니다.

답변

7

:

+0

고마워, 내가 필요한 것! : D 다운 투표에 불쌍해서 새로 등록했기 때문에 투표를 할 수 없다는 것을 몰랐습니다. –

+0

@ TobiasLindberg : 기꺼이 도와주었습니다.이 경우 아래 투표를 취소 할 수 있습니다 :). –

+0

미안하지만 클라이언트 쪽 일뿐입니다. 실제로 투표하지 않았습니다. 다시 한 번 감사드립니다! –

1

Regex과 잘 어울리는 것 같습니다.

일치하는 기본 정규식은 \d+ (하나 이상의 숫자)입니다.

Matches 컬렉션을 반복하여 Regex.Matches에서 반환하고 차례로 각 구문을 구문 분석합니다.

var matches = Regex.Matches(input, "\d+"); 

foreach(var match in matches) 
{ 
    myIntList.Add(int.Parse(match.Value)); 
} 
1

정규 표현식을 사용해보십시오, 당신은 당신의 문자열에서 숫자의 실행을 일치 [0-9]+을 일치시킬 수 있습니다. 이 정규식을 사용하는 C# 코드는 대략 다음과 같습니다.

Match match = Regex.Match(input, "[0-9]+", RegexOptions.IgnoreCase); 

// Here we check the Match instance. 
if (match.Success) 
{ 
    // here you get the first match 
    string value = match.Groups[1].Value; 
} 

물론 반환 된 문자열을 구문 분석해야합니다. 다음 travese 당신이 사항 String.split를 사용하여 부분 문자열을 분할 할 수 있습니다

using System.Linq; 
using System.Text.RegularExpressions; 

class Program { 
    static void Main() { 
     string text = "12 text text 7 text"; 
     int[] numbers = (from Match m in Regex.Matches(text, @"\d+") select int.Parse(m.Value)).ToArray(); 
    } 
} 
0

당신은 정규 표현식을 사용할 수 있습니다 foreach에 int.TryParse를 적용한 목록 :

string test = "12 text text 7 text"; 
var numbers = new List<int>(); 
int i; 
foreach (string s in test.Split(' ')) 
{ 
    if (int.TryParse(s, out i)) numbers.Add(i); 
} 

이제 숫자에 목록이 있습니다. 유효 값 :

+0

'0'은 허용되지 않습니다. – Oded

0

하고,이 문자열에서 정수 배열을 생성합니다

Regex regex = new Regex(@"^[0-9]+$"); 
+0

안녕하세요, 잡아 주셔서 감사합니다. 첫 번째 문장에서 언급했듯이 TryParse 여야합니다. 나는 그것을 바로 잡았다. –