对不起标题,但真的想不出用词来表达它!
无论如何,我想创建一个数字串,如果需要,数字之间的空格用于保存负数符号。
EG。
00003232 00002132-00000545 00646545-00000465
使用格式{0: #00000000;-#00000000}
这可行,但我的字符串很长,所以我需要很多上面的格式类型,其中包含不同数量的零。
有更好的方法吗?
答案 0 :(得分:1)
我想我做过类似的事情,下面的文章帮助了我。我认为你想要的模型就像
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
答案 1 :(得分:0)
我使用了以下内容并且似乎有效:
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());