我想为 VBScript 创建一个与 .Net 中的 String.Format 相同的 FormatString 函数。
我发现我可以在 VBScript 中使用 System.Text.StringBuilder 对象并测试了以下有效的代码
Option Explicit
Dim sbText 'As System.Text.StringBuilder
Set sbText = CreateObject("System.Text.StringBuilder")
Call sbText.AppendFormat_5( _
Nothing, _
"My name is {0} and the current date time is '{1:dd MMMM yyyy HH:mm:ss}'", _
Array("Robert", Now))
Call MsgBox(sbText.ToString())
然后我把它放在一个函数中,它失败了,见下文
Option Explicit
Function FormatString(ByVal sText, ByVal Arguments) 'As String
Dim sbText 'As System.Text.StringBuilder
'Test the input variables
If Not TypeName(sText) = "String" Then _
Err.Raise 5 'vbErrInvalidProcCallOrArg
If Not IsArray(Arguments) Then _
Err.Raise 5 'vbErrInvalidProcCallOrArg
Set sbText = CreateObject("System.Text.StringBuilder")
Call sbText.AppendFormat_5(Nothing, sText, Arguments)
FormatString = sbText.ToString()
End Function
Call MsgBox(FormatString( _
"My name is {0} and the current date time is '{1:dd MMMM yyyy HH:mm:ss}'", _
Array("Robert", Now)))
它失败Call sbText.AppendFormat_5(Nothing, sText, Arguments)
并出现错误“无效的过程调用或参数:'sbText.AppendFormat_5'”。
所以我不明白为什么在函数之外我可以按顺序传递以下类型:
Nothing
String
Arrary
它们可以工作,但在函数内部却不行。
有人可以帮忙吗?