You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何拆分指定格式字符串为多维数组并填充至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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 05:15:36