如何拆分指定格式字符串为多维数组并填充至DataGridView
从特定格式字符串填充DataGridView的实现方案
核心思路
- 拆分原始字符串为独立行数据,过滤无效空行
- 逐行解析列内容,提取邮箱、密码、到期日期等关键信息
- 基于当前日期自动计算剩余天数
- 将处理后的数据批量写入DataGridView
C# 实现代码
假设你已经在WinForm项目中创建了DataGridView,并添加了四列:colEmail(邮箱)、colPassword(密码)、colExpiryDate(到期日)、colRemainingDays(剩余天数),代码如下:
string rawInput = @"twinlock@yahoo.com|Let1337 | EX = 2022-11-13 | Remaining Days = 14/hkj@me.com|Padls1 | EX = 2023-08-10 | Remaining Days = 284/"; // 拆分行并过滤空行 var rowDataList = rawInput.Split('/').Where(row => !string.IsNullOrWhiteSpace(row)).ToList(); foreach (var rowStr in rowDataList) { // 拆分列并去除多余空格 var colData = rowStr.Split('|').Select(col => col.Trim()).ToArray(); // 提取基础字段 string email = colData[0]; string password = colData[1]; // 提取并转换到期日期 string expiryDateStr = colData[2].Replace("EX = ", string.Empty); if (!DateTime.TryParse(expiryDateStr, out DateTime expiryDate)) { // 处理日期解析失败的情况,比如跳过该行或标记错误 continue; } // 计算剩余天数,过期则显示0 TimeSpan dayDiff = expiryDate - DateTime.Now; int remainingDays = dayDiff.TotalDays >= 0 ? (int)dayDiff.TotalDays : 0; // 添加到DataGridView dataGridView1.Rows.Add(email, password, expiryDate.ToString("yyyy-MM-dd"), remainingDays); }
关键细节提示
- 空行过滤:原始字符串首尾的
/会生成空行,必须用Where过滤避免解析错误 - 日期容错:用
DateTime.TryParse替代直接Parse,避免因日期格式错误导致程序崩溃 - 剩余天数处理:如果到期日早于当前日期,剩余天数设为0,也可根据需求改为显示负数
- 性能优化:如果数据量较大,建议先构建
DataTable再绑定到DataGridView,比逐行添加更高效
内容的提问来源于stack exchange,提问作者Huzaifa
相关产品推荐
相关产品推荐

