在C#中,零填充一个值的简单优雅方法

7
我需要修复格式错误的邮编。导出数据的人将邮编视为数字,因此新泽西州和波多黎各的邮编被截断,前者以前导零开始,后者以两个前导零开始。
这些邮编应该都是五位数(不包括zip+4数据)。我知道如何通过获取字符串长度并在字符串前面添加适当数量的零来进行零填充 brute-force,但是否有一种更优雅的方式,利用C#的“本地”特性?例如,是否可以应用掩码将“9163”转换为“09163”,将“904”转换为“00904”,而无需获取值的长度?

2
顺便说一句:这肯定是重复了好几次.... - Mitch Wheat
请搜索一下,您可能会发现类似的问题已经被解决了。以下是一些相关的链接:https://dev59.com/QHA75IYBdhLWcg3wv7_A,https://dev59.com/f2855IYBdhLWcg3weEKJ,https://dev59.com/K3A75IYBdhLWcg3wH1XP,https://dev59.com/fmct5IYBdhLWcg3wqvXL等等。希望管理员能够先进行搜索!;) - Mitch Wheat
4个回答

10
string test = "9163";
test = test.PadLeft (5, '0');

string paddedString = test.PadLeft (5, '0'); - stuartd
谢谢,当截断值为字符串时它是有效的。 - Tim

8

如果您有一个整数值,请使用复合格式字符串以确保填充:

var padded1 = 1.ToString("D5");
D 后面的数字表示你需要所得到的值的长度。

谢谢,当原始字符串值被截断并转换为数字时,它可以正常工作,就像我的情况一样。 - Tim

3

感谢您提供的字符串蒙版方法。 - Tim

2
string one = a.ToString("00000"); // 00904

谢谢,这对我来说最容易记住了。 - Tim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接