我有一个有数字的字符串

string sNumbers = "1,2,3,4,5";

我可以拆分它,然后将其转换为List<int>

sNumbers.Split( new[] { ',' } ).ToList<int>();

如何将字符串数组转换为整数列表? 这样我就可以将string[]转换为IEnumerable


当前回答

在Unity3d上,int。解析工作不太好。所以我用波纹管。

List<int> intList = new List<int>( Array.ConvertAll(sNumbers.Split(','),
 new Converter<string, int>((s)=>{return Convert.ToInt32(s);}) ) );

希望这对Unity3d用户有所帮助。

其他回答

最好使用int。TryParse避免异常;

var numbers = sNumbers
            .Split(',')
            .Where(x => int.TryParse(x, out _))
            .Select(int.Parse)
            .ToList();

在Unity3d上,int。解析工作不太好。所以我用波纹管。

List<int> intList = new List<int>( Array.ConvertAll(sNumbers.Split(','),
 new Converter<string, int>((s)=>{return Convert.ToInt32(s);}) ) );

希望这对Unity3d用户有所帮助。

Joze的方法也需要LINQ, ToList()是在系统。Linq命名空间。

你可以将Array转换为List而不需要Linq,通过将数组传递给List构造函数:

List<int> numbers = new List<int>( Array.ConvertAll(sNumbers.Split(','), int.Parse) );

你可以用这个:

List<Int32> sNumberslst = sNumbers.Split(',').ConvertIntoIntList();

当我们有泛型时,为什么只使用int型呢? 那么像这样的扩展方法呢:

    public static List<T> Split<T>(this string @this, char separator, out bool AllConverted)
    {
        List<T> returnVals = new List<T>();
        AllConverted = true;
        var itens = @this.Split(separator);
        foreach (var item in itens)
        {
            try
            {
                returnVals.Add((T)Convert.ChangeType(item, typeof(T)));
            }
            catch { AllConverted = false; }
        }
        return returnVals;
    }

然后

 string testString = "1, 2, 3, XP, *, 6";
 List<int> splited = testString.Split<int>(',', out _);