在一行中将字符串转换为 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<string>
?
【问题讨论】:
我不明白“一行”的要求。争取编写清晰易懂的代码,而不是尽可能将操作放入尽可能小的空间。 随着 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<T>
有一个接受 IEnumerable<T>
的构造函数:
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】:如果您已经有一个列表并且想要从分隔字符串添加值,您可以使用AddRange
或InsertRange
。例如:
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>>