Преобразование строки в массив int с помощью LINQ [дубликат]
этот вопрос уже есть ответ здесь:
- C#: есть ли способ LINQ для создания массива объектов с заданным массивом параметров конструктора? 2 ответы
У меня есть функция (tointarray) для преобразования строки в массив ints, но я не очень доволен этим. Это делает работу, но должно быть больше элегантный способ сделать это, и, возможно,LINQ здесь может помочь. К сожалению, я не очень хорошо в LINQ. Есть ли лучший способ?
функции:
{
string s1 = "1;2;3;4;5;6;7;8;9;10;11;12";
int[] ia = tointarray(s1, ';');
}
int[] tointarray(string value, char sep)
{
string[] sa = value.Split(sep);
int[] ia = new int[sa.Length];
for (int i = 0; i < ia.Length; ++i)
{
int j;
string s = sa[i];
if (int.TryParse(s, out j))
{
ia[i] = j;
}
}
return ia;
}
6 ответов:
этой post задал аналогичный вопрос и использовал LINQ для его решения, возможно, это тоже поможет вам.
string s1 = "1;2;3;4;5;6;7;8;9;10;11;12"; int[] ia = s1.Split(';').Select(n => Convert.ToInt32(n)).ToArray();
вы можете немного сократить решение JSprangs, используя вместо этого группу методов:
string s1 = "1;2;3;4;5;6;7;8;9;10;11;12"; int[] ints = s1.Split(';').Select(int.Parse).ToArray();
s1.Split(';').Select(s => Convert.ToInt32(s)).ToArray();
непроверенные и с верхней части моей головы...тестирование теперь для правильного синтаксиса.тестирование и все выглядит хорошо.
фактически правильная реализация один к одному:
int n; int[] ia = s1.Split(';').Select(s => int.TryParse(s, out n) ? n : 0).ToArray();
вот код, который отфильтровывает недопустимые поля:
var ints = from field in s1.Split(';').Where((x) => { int dummy; return Int32.TryParse(x, out dummy); }) select Int32.Parse(field);
public static int[] ConvertArray(string[] arrayToConvert) { int[] resultingArray = new int[arrayToConvert.Length]; int itemValue; resultingArray = Array.ConvertAll<string, int> ( arrayToConvert, delegate(string intParameter) { int.TryParse(intParameter, out itemValue); return itemValue; } ); return resultingArray; }
ссылки:
http://codepolice.net/convert-string-array-to-int-array-and-vice-versa-in-c/