2016-11-16 18 views
6

Làm thế nào tôi có thể loại bỏ bất kỳ chuỗi từ một mảng và có chỉ số nguyên thay vìC# loại bỏ chuỗi từ một mảng

string[] result = col["uncheckedFoods"].Split(','); 

Tôi có

[0] = on;  // remove this string 
[1] = 22; 
[2] = 23; 
[3] = off;  // remove this string 
[4] = 24; 

Tôi muốn

[0] = 22; 
[1] = 23; 
[2] = 24; 

Tôi đã thử

var commaSepratedID = string.Join(",", result); 

var data = Regex.Replace(commaSepratedID, "[^,0-9]+", string.Empty); 

Nhưng có dấu phẩy trước phần tử đầu tiên, có cách nào tốt hơn để xóa chuỗi không?

Trả lời

10

này sẽ chọn tất cả các chuỗi có thể được phân tích như int

string[] result = new string[5]; 
result[0] = "on";  // remove this string 
result[1] = "22"; 
result[2] = "23"; 
result[3] = "off";  // remove this string 
result[4] = "24"; 
int temp; 
result = result.Where(x => int.TryParse(x, out temp)).ToArray(); 
+0

Tôi không biết nhiều về điều này vì vậy điều này có tốt hơn phương pháp regex về hiệu quả không? – Sean83

+0

Cảm ơn bạn, hoạt động tốt, hệ thống SO được thiết kế để chờ 5 phút để chấp nhận câu trả lời của bạn. – stom

+0

@ Sean83 trong trường hợp này cần nhanh hơn so với RegEx – fubo

0

Để cũng hỗ trợ double tôi sẽ làm một cái gì đó như thế này:

public static bool IsNumeric(string input, NumberStyles numberStyle) 
{ 
    double temp; 
    return Double.TryParse(input, numberStyle, CultureInfo.CurrentCulture, out temp); 
} 

và sau đó

string[] result = new string[] {"abc", "10", "4.1" }; 
var res = result.Where(b => IsNumeric(b, NumberStyles.Number)); 
// res contains "10" and "4.1" 
+0

Tôi chỉ cần số nguyên từ một mảng, câu trả lời này có thể giúp một người nào đó trong tương lai. Cảm ơn bạn. – stom

0

Hãy thử điều này

dynamic[] result = { "23", "RT", "43", "67", "gf", "43" }; 

       for(int i=1;i<=result.Count();i++) 
       { 
        var getvalue = result[i]; 
        int num; 
        if (int.TryParse(getvalue, out num)) 
        { 
         Console.Write(num); 
         Console.ReadLine(); 
         // It's a number! 
        } 
       } 
+1

lý do tại sao một loại động? lợi ích của câu trả lời của bạn đối với câu trả lời được chấp nhận là gì? – Bidou

+0

sử dụng động khi các kiểu dữ liệu giá trị không sạch nhưng trong trường hợp này nếu chúng ta sử dụng mảng String thì kết quả sẽ giống nhau – AmanMiddha

+0

Không bao giờ sử dụng 'dynamic' nếu không cần thiết. Trong trường hợp này, bạn phải sử dụng 'string' (ngay cả khi nó đang làm việc với động ...) – Bidou

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