gpt4 book ai didi

vb.net - 如何将格式函数从 VB 更新到 VB.NET

转载 作者:行者123 更新时间:2023-12-01 12:51:53 30 4
gpt4 key购买 nike

我正在尝试将 VB 函数移植到 VB.NET,但我无法使该函数正常工作并正确更新。

rFormat = Format(Format(Value, fmt), String$(Len(fmt), "@"))

问题似乎出在用于对齐值的小数点的 String$() 函数参数上。我怎样才能正确解决这个问题,或者是否有其他方法可以解决这个问题?

编辑

以下是一个示例控制台应用程序,显示了我遇到的问题。

Imports Microsoft.VisualBasic
Module Module1

Sub Main()
Dim rFormat As String
Dim fmt As String
Dim value As Object

fmt = "########.000"
value = 12345.2451212
'value = 12345
'~~~~~~~~~~~~~~~~~~~~~

'rFormat = Microsoft.VisualBasic.Format(Microsoft.VisualBasic.Format(value, fmt), "".PadLeft(fmt.Length, "@"c))
'Console.WriteLine(rFormat) ' <<Not working prints all "@" for any value!>>>

'rFormat = Microsoft.VisualBasic.Format(Microsoft.VisualBasic.Format(value, fmt), "".PadLeft(fmt.Length))
'Console.WriteLine(rFormat) '<<Not working prints nothing>>

'rFormat = (String.Format(value, fmt)).PadLeft(Len(fmt))
'Console.WriteLine(rFormat) ' <<Not working prints the value 12345.2451212>>> should print>>>>> 12345.245
'for integer values< works good>

rFormat = String.Format("{0," + fmt.Length.ToString + "}", String.Format(value, fmt))
Console.WriteLine(rFormat) ' <<Not working prints the value 12345.2451212>>> should print>>>>> 12345.245
'for integer values< works good>


End Sub

End Module

最佳答案

String$ 所做的只是将第二个参数中指定的字符重复第一个参数中指定的次数。

因此,如果 fmt 是“9999”,则 String$ 命令将生成“@@@@”。

您可以将其替换为 String.PadLeft 方法并继续使用 Microsoft.VisualBasic 命名空间中的 VB 格式函数:

    rFormat = Microsoft.VisualBasic.Format(Microsoft.VisualBasic.Format(value, fmt), "".PadLeft(fmt.Length, "@"c))

编辑:

根据问题中的编辑,正确的格式逻辑应该是:

    rFormat = String.Format("{0:" & fmt & "}", value)

查看 String.Format documentation 非常有帮助因为它有很多例子和解释。

关于vb.net - 如何将格式函数从 VB 更新到 VB.NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11813050/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com