如何从c#中的数组中获取所有非空值[重复]
Posted
技术标签:
【中文标题】如何从c#中的数组中获取所有非空值[重复]【英文标题】:how to get all non null values from array in c# [duplicate] 【发布时间】:2019-12-18 19:34:59 【问题描述】:我正在打印包含空值的数组中的所有非空值。我只想打印非空值
string a = "welcome";
var rm = new string [] null,"hai",null,"15";
Console.WriteLine("0",!String.IsNullOrEmpty(rm[0])? a
:!String.IsNullOrEmpty(rm[1]) ? a +":"+ rm[1] :
!String.IsNullOrEmpty(rm[2]) ? a +":"+ rm[1]+ ":"+rm[2] : a +":"+ rm[1]+
":"+rm[2]+":"+rm[3] );
实际输出:welcome:hai
预期输出:welcome:hai:15
【问题讨论】:
string.Join(rm.Where(T => T != null), ":")
using System.Linq; var filtered = rm.Where( elem => ! string.IsNullOrEmpty(elem))
过滤到您要打印的内容,然后使用 string.Join。
您是否正在专门寻找 linq 解决方案?你试过使用循环吗?
@AgentFire 先是分隔符,然后是集合;)
【参考方案1】:
您可以使用Where
方法获取和IEnumerable
代表所有非空和非空值。
您的数组称为rm
,因此您可以像这样获得IEnumerable
:
IEnumerable<string> nonNullNonEmptyValues = rm.Where(e => !String.IsNullOrEmpty(e));
如果你想像你的例子一样加入他们,你可以像这样使用String.Join
(@AgentFire 在他的评论中有一个错误,因为这个方法实际上首先使用分隔符,然后是值):
String joined = String.Join(":", nonNullNonEmptyValues);
【讨论】:
【参考方案2】:如果你想使用循环,它会是你的解决方案:
string a = "welcome";
var rm = new string [] null,"hai",null,"15";
for(int i = 0; i < rm.Length; i++)
if(!string.IsNullOrWhitespace(rm[i])
a += ":" + rm[i];
Console.WriteLine(a);
【讨论】:
以上是关于如何从c#中的数组中获取所有非空值[重复]的主要内容,如果未能解决你的问题,请参考以下文章