如何将一个变量格式化为一个带有前导零和消息的字符串?

3

我的代码中有这个PhraseNum:

public string PhraseNum { get => _phraseNum; set => SetProperty(ref _phraseNum, value); }

我希望的是,不仅仅显示数字,而是像这样显示:
Id: 00044

所以在字符“Id:”前面,然后加一个空格,再填充到五个数字。

看看string.Format方法。但在你的情况下,string.PadLeft会更有帮助。 - Dialecticus
2
尝试字符串插值$"Id: {_phraseNum:d5}"; 其中 d5 表示5个数字(格式字符串) - Dmitry Bychenko
我尝试过,但是它没有给出带前导零的五位数字。如果数字是79,那么我只能看到Id:79,而我想看到00079。我认为这可能是因为_phraseNum已经是一个字符串了。 - Alan2
2个回答

6

最简单的方法是在 int 对象上调用 ToString 方法并指定格式:

using System.Globalization;

int _phraseNum = 123;
_phraseNum.ToString("Id: 00000", CultureInfo.InvariantCulture); //outputs "Id: 00123"

1
我建议使用String.ToString(IFormatInfo, String)重载,并带有显式的CultureInfoInvariantCultureCurrentCulture)参数。 - Dai
1
谢谢,我以前用过ToString,但不知道我可以把所有的格式都放在()里。 - Alan2
1
很高兴能帮到你!如果这个答案对你有帮助,请标记为答案。谢谢 :) - Alen Genzić

3
public string PhraseNum { get => $"Id: {_phraseNum:D5}"; set => SetProperty(ref _phraseNum, value); }

你能告诉我开头的 $ 符号是做什么用的吗?谢谢。 - Alan2
1
@Alan2:$代表字符串插值 - {...}中的代码将被插值(而不是按原样打印)。 - Dmitry Bychenko
1
它允许您在适当的位置内嵌字符串值,看起来更直观。更多信息:https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated - Sanan Fataliyev
我已经尝试过,但是它没有给我带前导零的五位数字。例如,如果数字是79,那么我只能看到Id: 79,而我想要看到00079。 - Alan2
@Alan2,当然会给出结果,你检查了吗?:D5部分是格式。 - Sanan Fataliyev

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