C# 格式化字符串以匹配特定模式

C# 格式化字符串以匹配特定模式,c#,asp.net,C#,Asp.net,我试图找出如何将字符串格式化为特定模式 当用户输入他们的员工id号时,他们通常会对他们的期望感到困惑。因为他们经常被告知他们的员工id是5位数或4位数,这取决于他们被雇佣的时间 例如,我的员工id号是E004033,但对于我们的大多数系统,我只需输入4033,系统就会找到我 我们正在尝试将其添加到一个自定义页面中。基本上,我想做的是格式化一个字符串,使其始终看起来像E0XXXXX 因此,如果他们输入4033,脚本将把它转换成E004033,如果他们输入类似0851的内容,它将把它转换成E0008

我试图找出如何将字符串格式化为特定模式

当用户输入他们的员工id号时,他们通常会对他们的期望感到困惑。因为他们经常被告知他们的员工id是5位数或4位数,这取决于他们被雇佣的时间

例如,我的员工id号是
E004033
,但对于我们的大多数系统,我只需输入
4033
,系统就会找到我

我们正在尝试将其添加到一个自定义页面中。基本上,我想做的是格式化一个字符串,使其始终看起来像
E0XXXXX

因此,如果他们输入
4033
,脚本将把它转换成
E004033
,如果他们输入类似
0851
的内容,它将把它转换成
E000851
,或者如果他们输入
11027
它将把它转换成
E011027

如果用户输入中缺少填充零和前导的
E
,是否有一种基本上添加它们的方法?

您可以简单地:

var formattedId = "E" + id.PadLeft(6, '0');
要删除现有的前导E,请执行以下操作


确保用户的输入是整数,然后使用String.format将其格式化为6个空格

int parsedId;
bool ok = int.TryParse(id, out parsedId);
if (ok)
{
    return String.Format("E{0:000000}", parsedId);
}

如果他们输入
E004033
会不会导致字符串
EE004033
?是的,我假设有一个初始格式良好的值的检查。我想我可以将其包装在
if
语句中。我宁愿使用switch语句。如果有人利用你,你可能会被耍E4033@RobertE.McIntosh或者将“E”替换为“”:
“E”+id.replace(“E”),PadLeft(6,'0')
还可以更正错误的零数。这实际上是最好的解决方案,因为我的同事向我指出,我忘记了包括使用用户名的人,例如
jsmith
。这只适用于高层管理人员,他们需要支付很多钱来记住他们的员工id号。
int parsedId;
bool ok = int.TryParse(id, out parsedId);
if (ok)
{
    return String.Format("E{0:000000}", parsedId);
}