在一行中将字符串转换为 List<string>?

Posted

技术标签:

【中文标题】在一行中将字符串转换为 List<string>?【英文标题】:Convert string to List<string> in one line? 【发布时间】:2011-02-16 01:08:52 【问题描述】:

我有一个字符串:

var names = "Brian,Joe,Chris";

有没有办法将其转换为由, 在一行中分隔的List&lt;string&gt;

【问题讨论】:

我不明白“一行”的要求。争取编写清晰易懂的代码,而不是尽可能将操作放入尽可能小的空间。 随着 LINQ 的出现,可读且干净的“单行”在 C# IMO 中变得越来越普遍。 @Ed S. - 虽然我同意“在一行中”可能不是最好的表达方式,但像 Matt Greer 提供的单行语句往往非常清晰易懂。我的猜测是他只是想避免使用for 循环,这更乏味、容易出错且不清楚。 我并不是说单行字本来就更难理解,我只是说它不应该成为一个要求。只要做到最好的方式。如果恰好在一行中,那很好,但它不应该影响您编写代码的方式。 【参考方案1】:
List<string> result = names.Split(new char[]  ',' ).ToList();

根据 Dan 的建议,甚至更清洁:

List<string> result = names.Split(',').ToList();

【讨论】:

你可能故意把它放在那里,但我总是忽略整个new char[] 部分。至少对来说,这样更易​​读。 @Dan:我同意,通常我确实使用 params 重载。但是对于一个问题的答案,有时我觉得冗长更好。真的只是意见问题。 ToList() 似乎不再有用了? 你是否引入了System.LINQ命名空间?【参考方案2】:

List&lt;T&gt; 有一个接受 IEnumerable&lt;T&gt; 的构造函数:

List<string> listOfNames = new List<string>(names.Split(','));

【讨论】:

优秀 - 无需导入 System.Linq【参考方案3】:

我更喜欢这个,因为如果您的源字符串为空,它会阻止包含空项目的单个项目列表:

  IEnumerable<string> namesList = 
      !string.isNullOrEmpty(names) ? names.Split(',') : Enumerable.Empty<string>();

【讨论】:

【参考方案4】:

使用 Split() 函数对它们进行切片,并使用 ToList() 将它们作为列表返回。

var names = "Brian,Joe,Chris";
List<string> nameList = names.Split(',').ToList();

【讨论】:

thanks.it 帮助了我 +1【参考方案5】:

拆分由字符分隔的字符串并返回所有非空元素。

var names = ",Brian,Joe,Chris,,,";
var charSeparator = ",";
var result = names.Split(charSeparator, StringSplitOptions.RemoveEmptyEntries);

https://docs.microsoft.com/en-us/dotnet/api/system.string.split?view=netframework-4.8

【讨论】:

【参考方案6】:

如果您已经有一个列表并且想要从分隔字符串添加值,您可以使用AddRangeInsertRange。例如:

existingList.AddRange(names.Split(','));

【讨论】:

【参考方案7】:
string given="Welcome To Programming";
List<string> listItem= given.Split(' ').ToList();//Split according to space in the string and added into the list

输出:

Welcome

To 

Programming

【讨论】:

【参考方案8】:

使用 Stringify.Library nuget 包

//Default delimiter is ,
var split = new StringConverter().ConvertTo<List<string>>(names);

//You can also have your custom delimiter for e.g. ;
var split = new StringConverter().ConvertTo<List<string>>(names, new ConverterOptions  Delimiter = ';' );

【讨论】:

以上是关于在一行中将字符串转换为 List<string>?的主要内容,如果未能解决你的问题,请参考以下文章

在 Java 中将 List<String> 转换为 String[]

在 Java 中将 List<Object> 转换为 String[]

在 Java 中将 JSON 转换为 List<List<String>>

如何在 Java Stream 中将 POJO 的列表转换为 Map<String,List>?

在javascript中将ú转换为u [重复]

使用 LINQ 在一行代码中将 string[] 转换为 int[]