2013-11-04 21 views
5

Tôi đang cố gắng trích xuất các số nguyên có độ dài khác nhau từ một chuỗi có nhiều định dạng. Chuỗi nghi vấn có thể trông như thế này:C# Trích xuất nhiều số từ một chuỗi

string s = "Hallo (221122321 434334 more text3434 even mor,34343 343421.343sf 343"; 

Sản lượng tôi đang tìm kiếm là một mảng:

{221122321,434334,3434,34343,343421,343,343} 

Trả lời

24
var result = new Regex(@"\d+").Matches(s) 
           .Cast<Match>() 
           .Select(m => Int32.Parse(m.Value)) 
           .ToArray(); 
+2

Giải pháp rất hay '+ 1' –

+1

Giải pháp tuyệt vời, nhưng tôi muốn thay đổi' .OfType 'thành' .Cast 'để tốt hơn cho biết rằng tôi mong tất cả các mục trận đấu thực sự thuộc loại 'Trận đấu' (chúng không thể là bất kỳ loại nào khác). –

+1

Bạn không muốn thay đổi 'm => m.Value' thành' m => Int32.Parse (m.Value) 'để bạn có một mảng int, thay vì một mảng chuỗi? (Không có báo giá nào trong kết quả mong muốn.) –

-1

Sử dụng một vòng lặp foreach như thế này:

string result = ""; 

foreach (string str in s) 
{ 
    int number; 
    if (int.TryParse(str, out number)) 
     result += s; 
    else 
     result += ","; 
} 
+2

Điều này sẽ không hoạt động, cũng sẽ không dẫn đến một mảng. –

Các vấn đề liên quan