【问题标题】:Converting csv strings to a dictionary [closed]将 csv 字符串转换为字典 [关闭]
【发布时间】:2014-09-15 10:27:34
【问题描述】:

我有一个这样的字符串。让这个字符串为x。 现在我想将它添加到 key = name 和 value = date 的字典中。 问题是这似乎是 csv 中的 csv。如果这是一个文本文件,我可以使用 readline() 轻松完成。但由于这是一个文本字符串,我想不出办法。我可以完全控制字符串的出现方式(使用 php 生成)。因此,如果这是一种更有效的方法,我可以放置另一个字符而不是 \n。

谢谢。

Mark,2014-09-15 14:31:43 \n
John,2014-09-15 14:38:29 \n
Kennedy,2014-09-15 13:49:13 \n
Jolly,2014-09-15 13:49:18 \n
Diana,2014-09-15 13:49:22 \n
Henry,2014-09-15 14:33:21 \n

【问题讨论】:

  • 您能否展示您当前的代码并解释为什么您认为它不起作用?
  • 听起来你遇到了问题,因为换行符字符串是 \n 而不是 '\r\n'。您可以尝试对 '\n' 进行替换或拆分。可能值得考虑文件的大小。
  • 如果您可以完全控制字符串的生成,请使用 |作为分隔符。您可以使用 | 调用 split 函数将整个字符串拆分为一个数组,然后处理各个元素(可能是另一个拆分,这将分隔键和值)
  • String.Split 使用行终止字符,然后将每条记录拆分或解析成键值对。
  • 哦,我明白了。所以我将不得不使用两个 string.split 。我之前没有想到。谢谢:)

标签: c# csv dictionary


【解决方案1】:

你可以使用任何你想要的分隔符来分割任何字符串。例如,在您的字符串中,您的分隔符是“\n”,因此您可以:

var csv = "Mark,2014-09-15 14:31:43 \nJohn,2014-09-15 14:38:29 \nKennedy,2014-09-15 13:49:13 \nJolly,2014-09-15 13:49:18 \nDiana,2014-09-15 13:49:22 \nHenry,2014-09-15 14:33:21 \n";

var csvItems = csv.Split('\n');
var dictionary = new Dictionary<string, DateTime>();

foreach (var item in csvItems)
{
    if (!string.IsNullOrWhiteSpace(item))
    {
        var itemParts = item.Split(',');
        dictionary.Add(itemParts[0], Convert.ToDateTime(itemParts[1]));
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    相关资源
    最近更新 更多