有没有更好的方法可以使用字符串格式用负号或空格填充数字

本文关键字:空格 数字 填充 字符串 更好 方法 可以使 有没有 格式 | 更新日期: 2023-09-27 17:58:20

很抱歉有这个标题,但真的想不出用什么方法来表达它!

无论如何,我想创建一个数字字符串,如果需要的话,数字之间的空格用来容纳负号。

例如。

00003232 00002132-00000545 00646545-00000465

为此,我使用格式化{0: #00000000;-#00000000}

这是可行的,但我的字符串很长,所以我需要很多以上的格式类型,其中包含不同数量的零。

有更好的方法吗?

有没有更好的方法可以使用字符串格式用负号或空格填充数字

我想我也做了类似的事情,下面的文章对我有所帮助。我想你想要的模型应该是类似的

string.Format("{0:D8}", number)

如果不是非常接近的话。以下是我的答案所依据的链接和信息。

作为对您评论的回复,我运行了此测试(通过)

    [Test()]
    public void TestNegativePadding()
    {
        int number1 = 123;
        int number2 = -123;
        Assert.AreEqual(" 00000123", string.Format("{0,9:D8}", number1));
        Assert.AreEqual("-00000123", string.Format("{0,9:D8}", number2));
        string str = "";
        int[] test = {3232, 2132, -545, 646545, -465};
        foreach (var number in test)
        {
            str += string.Format("{0,9:D8}", number);
        }
        Assert.AreEqual("00003232 00002132-00000545 00646545-00000465", str.Trim());
    }

http://msdn.microsoft.com/en-us/library/dd260048(v=vs.110).aspx

byte byteValue = 254;
short shortValue = 10342;
int intValue = 1023983;
long lngValue = 6985321;               
ulong ulngValue = UInt64.MaxValue;
// Display integer values by caling the ToString method.
Console.WriteLine("{0,22} {1,22}", byteValue.ToString("D8"), byteValue.ToString("X8"));
Console.WriteLine("{0,22} {1,22}", shortValue.ToString("D8"), shortValue.ToString("X8"));
Console.WriteLine("{0,22} {1,22}", intValue.ToString("D8"), intValue.ToString("X8"));
Console.WriteLine("{0,22} {1,22}", lngValue.ToString("D8"), lngValue.ToString("X8"));
Console.WriteLine("{0,22} {1,22}", ulngValue.ToString("D8"), ulngValue.ToString("X8"));
Console.WriteLine();
// Display the same integer values by using composite formatting.
Console.WriteLine("{0,22:D8} {0,22:X8}", byteValue);
Console.WriteLine("{0,22:D8} {0,22:X8}", shortValue);
Console.WriteLine("{0,22:D8} {0,22:X8}", intValue);
Console.WriteLine("{0,22:D8} {0,22:X8}", lngValue);
Console.WriteLine("{0,22:D8} {0,22:X8}", ulngValue);
// The example displays the following output: 
//                     00000254               000000FE 
//                     00010342               00002866 
//                     01023983               000F9FEF 
//                     06985321               006A9669 
//         18446744073709551615       FFFFFFFFFFFFFFFF 
//        
//                     00000254               000000FE 
//                     00010342               00002866 
//                     01023983               000F9FEF 
//                     06985321               006A9669 
//         18446744073709551615       FFFFFFFFFFFFFFFF 
//         18446744073709551615       FFFFFFFFFFFFFFFF

我使用了以下内容,并且似乎有效:

int[] test = { 3232, 2132, -545, 646545, -465 };
StringBuilder resultString = new StringBuilder();
test.ToList().ForEach(i =>
{
    string delimeter = i>=0?" ":"-";
    string value = Math.Abs(i).ToString("00000000");
    resultString.AppendFormat("{0}{1}", delimeter, value);
});
Console.WriteLine(resultString.ToString());