从对象列表中的属性中删除空格? [复制]
Posted
技术标签:
【中文标题】从对象列表中的属性中删除空格? [复制]【英文标题】:Remove white spaces from properties in list of the objects? [duplicate] 【发布时间】:2017-08-06 08:11:01 【问题描述】:我有这个对象列表:
public class Location
public string area get; set;
public string sensorId get; set;
public string address get; set;
List<Location> items = List<Location>()
new Location()area = "london ", address ="king road", sensorId ="2134",
new Location()area = "moscow", address ="george str", sensorId ="2134",
new Location()area = "york ", address ="johnson str ", sensorId ="2134",
new Location()area = " tokyo", address ="king road 5", sensorId ="2134",
new Location()area = "paris", address ="elitom road", sensorId ="2134"
如何使用 linq 删除项目变量中的区域和地址属性中的空格?
【问题讨论】:
为什么要使用 linq 来做呢? 您要删除所有个空格吗?还是只是前导和尾随空格?也就是说,“王道”应该变成“王道”吗?还是你只是想把“东京”变成“东京”? 【参考方案1】:部分使用 lynq 完成:
items = items.Select(x => new Location() area = x.area.Trim(), address = x.address.Trim(), sensorId = x.sensorId ).ToList();
【讨论】:
这只会删除开始和结束的空格,OP想要删除所有的空格 他们也不想从sensorId
中删除空格
@TheLethalCoder 你是正确的sensorId
,但没有明确指定删除所有空格 - 根据我将其解释为修剪所需空格的问题
@cramopy 它说要删除空格。不是开头和结尾的空格。 那是你需要特别指定的,如果那是你想要的行为。【参考方案2】:
IMO Linq
不应该用于此,但如果您愿意,可以试试这个:
items = items.Select(item =>
item.area = Regex.Replace(item.area, @"\s+", ""); // remove all white spaces
item.address = Regex.Replace(item.address, @"\s+", ""); // remove all white spaces
return item; // return processed item...
).ToList(); // return as a List
【讨论】:
为什么不应该使用 Linq? @JimMischel 您没有将序列转换为新序列,而是在改变序列中的值。 LINQ 的设计初衷并非如此。它是专门为不这样做而设计的。 @JimMischel 因为for
/foreach
循环最终可能会更具可读性。显然这是固执己见。
@JimMischel 不,不是。它正在创建一个包含完全相同项目的新序列,但在创建新序列的过程中会改变这些项目。
是的,我的错。我误读了代码。我认为他的代码与另一个答案相似,它不会改变项目。以上是关于从对象列表中的属性中删除空格? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Oracle regexp_replace 从空格分隔列表中删除重复项? [复制]