从对象列表中的属性中删除空格? [复制]

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 不,不是。它正在创建一个包含完全相同项目的新序列,但在创建新序列的过程中会改变这些项目。 是的,我的错。我误读了代码。我认为他的代码与另一个答案相似,它不会改变项目。

以上是关于从对象列表中的属性中删除空格? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

从Java中删除字符串中的空格[复制]

使用 Python 删除对象列表中的重复项

如何通过 Oracle regexp_replace 从空格分隔列表中删除重复项? [复制]

list.remove(x) 删除超过此列表中的对象[重复]

如何从列表中的字符串末尾删除 '\n'? [复制]

如何在 C# 中删除(或取消)泛型数组列表中的对象? [复制]