生成Z开头带序列编号的用户名及修复FormatException问题求助
问题分析与修复方案
你的代码主要存在三个问题:
- 数字格式化逻辑错误:
number.ToString("Z" + length)的用法不符合C#字符串格式化规则,无法生成带前缀"Z"的补零编号。 - 返回值类型不匹配:方法声明返回
string,但实际返回userNames.ToString(),这只会输出列表的类型名称,而非列表里的用户名内容。 - 调用方式错误:多次调用
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
相关产品推荐
相关产品推荐

