Ответ 1
var numbers = sNumbers.Split(',').Select(Int32.Parse).ToList();
У меня есть строка с номерами
string sNumbers = "1,2,3,4,5";
Я могу разбить его, а затем преобразовать в List<int>
sNumbers.Split( new[] { ',' } ).ToList<int>();
Как преобразовать строковый массив в целочисленный список?
Так что я смогу преобразовать string[]
в IEnumerable
var numbers = sNumbers.Split(',').Select(Int32.Parse).ToList();
Вы также можете сделать это без необходимости Linq:
List<int> numbers = new List<int>( Array.ConvertAll(sNumbers.Split(','), int.Parse) );
// Uses Linq
var numbers = Array.ConvertAll(sNumbers.Split(','), int.Parse).ToList();
Для метода Joze также требуется LINQ, ToList()
находится в пространстве имен System.Linq
.
Вы можете преобразовать массив в список без Linq, передав массив конструктору списка:
List<int> numbers = new List<int>( Array.ConvertAll(sNumbers.Split(','), int.Parse) );
В Unity3d, int.Parse
работает неправильно. Поэтому я использую как ниже.
List<int> intList = new List<int>( Array.ConvertAll(sNumbers.Split(','),
new Converter<string, int>((s)=>{return Convert.ToInt32(s);}) ) );
Надеемся на эту помощь для пользователей Unity3d.
также вы можете использовать этот метод расширения
public static List<int> SplitToIntList(this string list, char separator = ',')
{
return list.Split(separator).Select(Int32.Parse).ToList();
}
использование:
var numberListString = "1, 2, 3, 4";
List<int> numberList = numberListString.SplitToIntList(',');
Также возможно, чтобы int array задал прямое значение назначения.
как это
int[] numbers = sNumbers.Split(',').Select(Int32.Parse).ToArray();
Моя проблема была похожа, но с неудобством, что иногда строка содержит буквы (иногда пустые).
string sNumbers = "1,2,hh,3,4,x,5";
Пытается следовать методу расширения кода Pcode Xonos:
public static List<int> SplitToIntList(this string list, char separator = ',')
{
int result = 0;
return (from s in list.Split(',')
let isint = int.TryParse(s, out result)
let val = result
where isint
select val).ToList();
}
Вы можете использовать новые возможности языка С# 6.0:
(s) => { return Convert.ToInt32(s); }
на
соответствующая группа методов Convert.ToInt32
new Converter<string, int>(Convert.ToInt32)
с помощью: Convert.ToInt32
Результат будет:
var intList = new List<int>(Array.ConvertAll(sNumbers.Split(','), Convert.ToInt32));
Вы можете использовать это:
List<Int32> sNumberslst = sNumbers.Split(',').ConvertIntoIntList();