我有一个整数,我想转换为带前导零的字符串.
所以我有1并想把它变成01.14应该变成14没有014.
我试过了:
let str = (string 1).PadLeft(2, '0') // visual studio suggested this one
let str = (string 1).PadLeft 2 '0'
let str = String.PadLeft 2 '0' (string 1)
Run Code Online (Sandbox Code Playgroud)
但是没有工作:(当我用F#搜索这样的东西时,我得到了东西,printfn但我不想打印到stdout:/
免责声明:这是我的第一个F#
for (int iCount = 0; iCount < oForm.LineItems.Count; iCount++)
{
Run Code Online (Sandbox Code Playgroud)
// cartDetails在这里是一个stringbuilder.
cartDetails.Append(String.Format("{0:0}", oForm.LineItems[iCount].Quantity));
cartDetails.Append(String.Format("{0:0.00}", oForm.LineItems[iCount].Price));
cartDetails.Append(String.Format("{0:0.00}", oForm.LineItems[iCount].ExtendedPrice));
//cartDetails.Append(string.Format("{0,10:#,##0.00}", oForm.LineItems[iCount].Price) + "</TD><TD>");
//cartDetails.Append(string.Format("{0,10:#,##0.00}", oForm.LineItems[iCount].ExtendedPrice) + "</TD><TD>");
//cartDetails.Append(String.Format("{0}", oForm.LineItems[iCount].Quantity).PadLeft(4)+ "</TD><TD>");
//cartDetails.Append(String.Format("{0:0.00}", oForm.LineItems[iCount].Price).PadLeft(8) + "</TD><TD>");
Run Code Online (Sandbox Code Playgroud)
我已经使用了我正在使用的源代码.我添加数量,价格,扩展价格和所有都是十进制列.我要做的就是用左边的空间填充.似乎正在发生十进制舍入到2位数.
上面那些注释的行是我尝试过的其他一些选项.目前,如果qty具有诸如4和40之类的值,则当我将它们打印在表格中时它们不会对齐.与价格相同.
有人请建议我在这做什么?
Update1:尝试了Lucas的建议,但它没有用.这就是我要做的事情.
cartDetails.Append(String.Format("{0:0,10}",oForm.LineItems [iCount] .Quantity));
当我尝试上述操作时,无论oForm.LineItems [iCount]中的值如何,它都显示每行10个.Quantity.
如果我更改String.Format("{0:0,4}",它会显示所有记录的04
当我正在寻找在.NET源代码下面的源代码,我没有找到源PadHelper是在方法内PadLeft和PadRight。
我的搜索有问题吗?
[System.Security.SecuritySafeCritical] // auto-generated
[ResourceExposure(ResourceScope.None)]
[MethodImplAttribute(MethodImplOptions.InternalCall)]
private extern String PadHelper(int totalWidth, char paddingChar, bool isRightPadded);
Run Code Online (Sandbox Code Playgroud) 我有这段代码
long num = Int64.Parse(Convert.ToString(random.Next(0, 65535), 2).PadLeft(16, '0'))
Run Code Online (Sandbox Code Playgroud)
使用此代码时,字符串不会使用前导零填充.我不确定,但我的猜测是,当字符串被解析时,它会从某种原因删除前导零?
如果我做这样的事情
long num = Int64.Parse(Convert.ToString(random.Next(0, 65535), 2).PadLeft(16, '8'))
Run Code Online (Sandbox Code Playgroud)
或者任何非零的数字,它将正确地输出到带有前导8的16位数字.
为什么会发生这种情况有一个很好的解释?
还有一个快速简单的解决方案吗?
这不是任何使用int.ToString("D16")或任何类型的重复.我相信这是一个独特的问题.