Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 拆分字符串,在一行中转换为列表()_C#_List_Split - Fatal编程技术网

C# 拆分字符串,在一行中转换为列表()

C# 拆分字符串,在一行中转换为列表(),c#,list,split,C#,List,Split,我有一个有数字的字符串 string sNumbers = "1,2,3,4,5"; 我可以拆分它,然后将其转换为列表 如何将字符串数组转换为整数列表? 因此,我可以将字符串[]转换为IEnumerable您也可以这样做,而无需Linq: List<int> numbers = new List<int>( Array.ConvertAll(sNumbers.Split(','), int.Parse) ); // Uses Linq var numbers = Ar

我有一个有数字的字符串

string sNumbers = "1,2,3,4,5";
我可以拆分它,然后将其转换为列表

如何将字符串数组转换为整数列表?
因此,我可以将字符串[]转换为IEnumerable

您也可以这样做,而无需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的情况下将数组转换为列表:

列表编号=新列表数组.ConvertAllsNumbers.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(',');

我的问题与此类似,但不便之处在于,有时字符串包含字母,有时为空

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(); 
}

也可以使用int数组直接赋值

像这样

int[] numbers = sNumbers.Split(',').Select(Int32.Parse).ToArray();
您可以使用以下选项:

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

您可以使用新的C 6.0语言功能:

将委托s=>{return Convert.ToInt32s;}替换为 对应的方法组Convert.ToInt32 将冗余构造函数调用:new ConverterConvert.ToInt32替换为:Convert.ToInt32 结果将是:

var intList = new List<int>(Array.ConvertAll(sNumbers.Split(','), Convert.ToInt32));
更好地使用int.TryParse来避免异常

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

我们今天有完全相同的问题:在一行中,si非常强是一个非常严格的要求!这个问题明确地说要分割一个数字串,这使得答案很简单。达里奥提到的问题是如何处理陷入困境的问题?通用字符串的TryParse问题。欢迎使用堆栈溢出!虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满您的代码,因为这会降低代码和解释的可读性!函数ConvertIntoIntList不存在。此外,您需要添加以下类:静态公共类帮助方法{静态公共列表ConvertIntoIntList此字符串[]stringList{int x=0;var intList=stringList.Wherestr=>int.tryparsest,out x.Selectstr=>x.ToList;return intList;}}谢谢,尽管您声明了一个分隔符,然后不使用它。当列表的值为空或为空时,会出现此异常。@SayedM.Idrees只需在拆分前检查null或为空。添加null检查:var numbers=sNumbers?.Split','。SelectInt32.Parse.ToList;
var intList = new List<int>(Array.ConvertAll(sNumbers.Split(','), Convert.ToInt32));
var numbers = sNumbers
            .Split(',')
            .Where(x => int.TryParse(x, out _))
            .Select(int.Parse)
            .ToList();