c# - 将字符串转换为字典键值 - 拆分问题
问题描述
我正在尝试将字符串转换为键值对以进行测试。我遇到的问题是,当我拆分字符串时,该值在极少数情况下可能为 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"
如何修改我的代码以检查这种情况?
解决方案
试一试:
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);
推荐阅读
- makefile - GNU make not match % 从一个规则中创建多个目标
- java - 如何对使用 javafx 文件选择器的方法进行单元测试
- python - Python 安装的各种问题:没有名为 pip3 的模块
- testing - 如何在 testcafe 上使用 id 获取元素
- unit-testing - 存根或模拟假 req、res 并通过存根函数
- android - 如何将 ImageView 附加到 BottomSheet 上方?
- angular - Angular:在选择元素的onChange上创建订阅
- math - 如何计算随时间的减少速度总和
- node.js - 从 actions-on-google 模块了解 dialogflow 服务的应用实例
- excel - 如果单元格被双击并被锁定,则显示用户表单