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

如何在C#中验证字符串是否由年份和周数组合构成

C# 年份周数字符串校验实现方案

简化版实现(符合你确认的周数≤53要求)

实现逻辑

  • 校验输入字符串必须为6位纯数字
  • 拆分取后2位作为周数,校验范围为1~53即可

代码示例

public static bool ValidateYearWeek(string input)
{
    // 校验基础格式:非空+长度为6位
    if (string.IsNullOrWhiteSpace(input) || input.Length != 6)
        return false;
    
    // 校验所有字符均为数字
    foreach (char c in input)
    {
        if (!char.IsDigit(c))
            return false;
    }
    
    // 提取后两位转换为周数
    int week = int.Parse(input.Substring(4, 2));
    
    // 按需求校验周数范围
    return week >= 1 && week <= 53;
}

扩展:精确校验方案(匹配对应年份实际最大周数,后续有需求可参考)

如果后续规则调整为需要校验周数不超过对应年份的实际最大周数,可以按照ISO 8601周数计算规则实现,参考代码如下:

using System.Globalization;

public static bool ValidateYearWeekPrecise(string input)
{
    // 基础格式校验
    if (string.IsNullOrWhiteSpace(input) || input.Length != 6)
        return false;
    // 拆分转换年份、周数
    if (!int.TryParse(input.Substring(0, 4), out int year) 
        || !int.TryParse(input.Substring(4, 2), out int week))
        return false;
    
    // 计算当年实际最大周数
    DateTime lastDayOfYear = new DateTime(year, 12, 31);
    Calendar cal = CultureInfo.InvariantCulture.Calendar;
    int maxWeek = cal.GetWeekOfYear(lastDayOfYear, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
    
    return week >= 1 && week <= maxWeek;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 09:06:03