【问题标题】:Get certain row by searching for a string通过搜索字符串获取特定行
【发布时间】:2021-08-21 16:50:02
【问题描述】:

我对 C# 非常陌生,并且正在尝试感受它。进展缓慢!我想要达到的目标应该相对简单;我想通过搜索从 CSV 文件中读取一行。 IE。如果我搜索用户名“Toby”,它将获取整行,最好是一个数组。

这是我的users.csv 文件:

Id,Name,Password
1,flugs,password
2,toby,foo

我可以发布我尝试过的代码,但在之前的尝试中我什至没有接近。在 Python 中做这样的事情要容易一些,在 C# 中也可能很容易,但我太新了,不知道!

有人对我应该如何处理/编码有任何想法吗?非常感谢。

【问题讨论】:

标签: c# csv


【解决方案1】:

在 c# 中也很容易做到:

var lineAsArray = File.ReadLines("path").First(s => s.Contains(",toby,")).Split(',');

如果您想要大小写,请使用例如Contains(",toby,", StringComparison.OrdinalIgnoreCase)

如果您的用户要输入“Toby”,您可以在它的开头/结尾连接一个逗号以遵循这个简单的搜索(它将在该行的任何位置找到 Toby),或者您可以先拆分单独的,然后看看第二个元素是不是托比

var lineAsArray = File.ReadLines("path").Split(',').First(a => a[1].Equals("toby"));

要使这个不区分大小写,请使用与上述相同的方法将合适的 StringComparison 参数放入 Equals


天空是您想要参与其中的极限;使用一个库将 CSV 解析为用命名的类型参数表示你的行的对象可能是我要停下来的地方。从 josh close 或 ServiceStack Text 看一下 CSVHelper,尽管不乏 csv 解析器库——它已经死了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-18
    • 2010-12-23
    • 1970-01-01
    • 2015-10-02
    • 2018-06-24
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多