2016-11-16 19 views
6

Jak mogę usunąć wszelkie sznurki z tablicy i mają tylko liczby całkowite zamiastC# usunąć łańcuchy z tablicy

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

mam

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

Chcę

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

Próbowałem

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

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

Ale jest przecinek przed pierwszym elementem, czy jest jakiś lepszy sposób, aby usunąć sznurki?

Odpowiedz

10

Wybiera wszystkie ciągi, które mogą być analizowane jako 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

Nie wiem zbyt wiele na ten temat, więc czy jest to lepsze od metody regex pod względem wydajności? – Sean83

+0

Dziękuję, działa dobrze, system SO jest zaprojektowany, aby czekać 5 minut na zaakceptowanie odpowiedzi. – stom

+0

@ Sean83 w tym przypadku powinno być szybciej w porównaniu do RegEx – fubo

0

Aby również wspierać double chciałbym zrobić coś takiego:

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

a następnie

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

Potrzebuję tylko liczb całkowitych z tablicy, te odpowiedzi mogą pomóc komuś w przyszłości. Dziękuję Ci. – stom

0

Wypróbuj

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

dlaczego typ dynamiczny? jaka jest korzyść z twojej odpowiedzi na zaakceptowaną? – Bidou

+0

dynamiczne użycie, gdy typ danych wartości nie jest czysty, ale w takim przypadku, jeśli użyjemy tablicy łańcuchowej, wynik będzie taki sam. – AmanMiddha

+0

Nigdy nie używaj dynamicznego, jeśli nie jest potrzebne. W tym przypadku musisz użyć 'string' (nawet jeśli działa z dynamicznym ...) – Bidou