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

C# DataTable中court_case字段格式校验及规范化格式化实现

解决方案

1. 改造校验+格式化方法

原来的Validar_Cc方法仅能校验数字合法性,我们新增一个格式化方法,直接输出符合XXXX/XX规范的结果,同时返回校验结果:

// 输入原始court_case字符串,返回(是否校验通过,格式化后的字符串)
public static (bool IsValid, string FormattedCase) FormatCourtCase(string rawCourtCase)
{
    // 空值直接返回不合法
    if (string.IsNullOrWhiteSpace(rawCourtCase))
        return (false, string.Empty);
    
    // 按斜杠分割
    var parts = rawCourtCase.Split('/');
    // 必须只有1个斜杠,分割为2段
    if (parts.Length != 2)
        return (false, string.Empty);

    // 处理左侧部分,转不成整数默认是0
    int leftNum = 0;
    bool leftValid = int.TryParse(parts[0].Trim(), out leftNum);
    // 处理右侧部分,转不成整数默认是0
    int rightNum = 0;
    bool rightValid = int.TryParse(parts[1].Trim(), out rightNum);

    if (!leftValid || !rightValid)
        return (false, string.Empty);

    // 左侧补前导零到4位,右侧补前导零到2位
    // 如果你示例中的2/1转0002/10是需要右侧补后导零,可把右侧代码替换为 rightNum.ToString().PadRight(2, '0')
    string formatted = $"{leftNum:D4}/{rightNum:D2}";
    return (true, formatted);
}

2. 批量遍历DataTable修正数据

你原来的遍历代码类型写错了,dataGridView2.Rows的元素是DataGridViewRow,我们直接取绑定的DataTable来操作效率更高:

private void btnCORRECT_ERROR_COURTCASE_Click(object sender, EventArgs e)
{
    int successCount = 0;
    int failCount = 0;
    // 拿到dataGridView2绑定的DataTable
    DataTable dt = dataGridView2.DataSource as DataTable;
    if (dt == null || !dt.Columns.Contains("court_case"))
    {
        MessageBox.Show("未加载有效数据或缺少court_case字段");
        return;
    }

    // 遍历每一行修正
    foreach (DataRow row in dt.Rows)
    {
        // 跳过空值行
        if (row["court_case"] == DBNull.Value)
        {
            failCount++;
            continue;
        }
        string rawValue = row["court_case"].ToString();
        var formatResult = FormatCourtCase(rawValue);
        if (formatResult.IsValid)
        {
            // 赋值修正后的值
            row["court_case"] = formatResult.FormattedCase;
            successCount++;
        }
        else
        {
            failCount++;
        }
    }

    // 刷新界面显示
    dataGridView2.Refresh();
    MessageBox.Show($"处理完成:成功修正{successCount}条,失败{failCount}条");

    // 如果需要把修正后的数据回写到数据库,在这里加你的更新逻辑即可
}

可选优化

如果你不需要单独保留校验方法,原来的Validar_Cc也可以直接调用新的格式化方法实现:

public static bool Validar_Cc(string CourtCase)
{
    return FormatCourtCase(CourtCase).IsValid;
}

内容的提问来源于stack exchange,提问作者Fyah10

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:36:06