ASP.NET/C#中的字符串分割

4

我正在处理CSV文件

ABC|06|001
PPP|06|001

我正在运行LINQ来拆分CSV文件

var path = Server.MapPath("~/App_Data/CSV.txt");
var _collectCSGData = from line in File.ReadAllLines(path)
                      let parts = line.Split('|')
                       select new { ID = parts[0],Assignment=parts[1]};

如何获取每行的最后一个项目?
(即)
001
001

这更像是使用管道分隔的文本,而不是CSV。 - Stephen Cleary
@Stephen Cleary - 如果是由列分隔的,那么人们似乎只称其为 CSV,不管分隔符是什么,因为它是可以轻松导入 Excel 的内容。 - James Black
4个回答

8
from line in File.ReadAllLines(path)
select line.Split('|').LastOrDefault()

+1 - 好的,这看起来是一个很棒的答案。我从未使用过这个函数。 - James Black

1

类似这样:

parts[parts.length -1]

应该能解决问题。


@Steven Sudit - 是的,但你可以加入一个检查:parts.length > 0 ? parts[parts.length - 1] : "" - James Black

1
var _collectCSGData = from line in File.ReadAllLines(path) 
                      let parts = line.Split('|') 
                      let assignment = parts[parts.length - 1]
                       select assignment;

这应该有效,如果你需要处理数据,let 是你的好帮手。

更新:

由于某些部分可能为空,因此您可以有:

let assignment = parts.length > 0 ? parts[parts.length - 1] : String.Empty

0

如果您知道它是第三部分,那么在匿名构造函数中添加如何:

var _collectCSGData = from line in File.ReadAllLines(path)
                      let parts = line.Split('|');
                      select new 
                         {ID = parts[0], Assignment = parts[1], Data = parts[2]};

或者,如果只是“无论有多少项都是最后一项”

var _collectCSGData = from line in File.ReadAllLines(path)
                      let parts = line.Split('|');
                      select new 
                        {ID = parts[0], Assignment = parts[1], Data = parts[part.length-1]};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接