首页 > 解决方案 > 将字符串转换为字典键值 - 拆分问题

问题描述

我正在尝试将字符串转换为键值对以进行测试。我遇到的问题是,当我拆分字符串时,该值在极少数情况下可能为 null

例如:

"Sent On\r\n2021-01-31 09:18:42"
"Priority\r\nLow"

当我使用以下代码时,它适用于所有记录,但值为 null 时除外。总会有一把钥匙

Dictionary<string, string> details = new Dictionary<string, string>();
 foreach (var row in Rows)
            {
                var text = row.Text.Replace("\r\n", ",");
                var splitText = text.IndexOf(",");
                var key = text.Substring(0, splitText);
                var value = text.Substring(splitText + 1);

                details.Add(key, value);
            }
            return details;

问题是当文本是这样的时候,我只有一个键而没有值。我不能用 '\r\n' 分割文本,因为它没有值

"Read On"

如何修改我的代码以检查这种情况?

标签: c#.net.net-core

解决方案


试一试:

foreach (var row in Rows)
{
    var parts = row.Text.Split(new [] { Environment.NewLine }, StringSplitOptions.None);
    var key = parts[0];
    var value = parts.Length > 1 ? parts[1] : null;
    details.Add(key, value);
}

甚至这样:

Dictionary<string, string> details =
    Rows
        .Select(row => row.Text.Split(new [] { Environment.NewLine }, StringSplitOptions.None))
        .ToDictionary(parts => parts[0], parts => parts.Length > 1 ? parts[1] : null);

推荐阅读