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

生成Z开头带序列编号的用户名及修复FormatException问题求助

问题分析与修复方案

你的代码主要存在三个问题:

  1. 数字格式化逻辑错误:number.ToString("Z" + length) 的用法不符合C#字符串格式化规则,无法生成带前缀"Z"的补零编号。
  2. 返回值类型不匹配:方法声明返回string,但实际返回userNames.ToString(),这只会输出列表的类型名称,而非列表里的用户名内容。
  3. 调用方式错误:多次调用GetUserName()并加入新列表,会把整个用户名列表作为单个元素重复添加,不符合导出需求。

修复后的代码

生成用户名列表的正确方法

public static List<string> GetUserNames()
{
    int digitLength = 6; // 对应000001到000048的6位数字长度
    List<string> userNames = new List<string>();
    for (int i = 1; i <= 48; i++)
    {
        // 先将数字格式化为6位补零字符串,再拼接前缀"Z"
        string userName = $"Z{i.ToString($"D{digitLength}")}";
        userNames.Add(userName);
    }
    return userNames;
}

正确的调用方式

如果需要直接获取这48个用户名用于导出Excel,直接调用方法即可:

// 获取完整的用户名列表
var loginList = GetUserNames();
// 后续使用loginList执行Excel导出操作

如果确实需要重复添加多组(比如3组共144个用户名),可以用AddRange实现:

var login = new List<string>();
login.AddRange(GetUserNames());
login.AddRange(GetUserNames());
login.AddRange(GetUserNames());

关键说明

  • D{digitLength} 是C#的数字格式化符,D表示十进制数字,后面的数值指定总长度,不足位数自动用前导零补齐,比如i=1时,ToString("D6")会生成000001。
  • 方法返回类型改为List<string>,直接返回生成的用户名列表,避免类型不匹配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 23:45:43