VBScript:格式化字符串的最简单方法是什么?

Pax*_*nos 5 vbscript formatting string-formatting

我有以下格式:Value1是{0},Value2是{1}.

我需要用字符串替换括号中的数字.这在大多数语言中都可以使用string.Format或其他类似的东西轻松完成.我怎么能只使用vbscript呢?

我试过了:

Replace (strFormat, "{0}", value1)  
Replace (strFormat, "{1}", value2)
Run Code Online (Sandbox Code Playgroud)

这是行不通的.有解决方案吗

Gaz*_*azB 10

我想要类似的东西并且不喜欢这些答案,因为它们意味着每个值有多行(忽略Beaner的答案是错误的语言!)所以我创建了以下内容:

Public Function StrFormat(FormatString, Arguments())
    Dim Value, CurArgNum

    StrFormat = FormatString

    CurArgNum = 0
    For Each Value In Arguments
        StrFormat = Replace(StrFormat, "{" & CurArgNum & "}", Value)
        CurArgNum = CurArgNum + 1
    Next
End Function
Run Code Online (Sandbox Code Playgroud)

您可以使用以下内容(请注意,您需要在变量周围添加"Array()"):

formatString = "Test '{0}', '{2}', '{1}' and {0} again!"
Response.Write StrFormat(formatString, Array(1, 2, "three", "Unused"))
Response.Write StrFormat(formatString, Array(4, 5, "six", "Unused"))
Run Code Online (Sandbox Code Playgroud)

哪个会输出你所期望的:

Test '1', 'three', '2' and 1 again!
Test '4', 'six', '5' and 4 again!
Run Code Online (Sandbox Code Playgroud)

希望这对其他语言的人来说更自然一点.


Jas*_*Dev 9

Replace (strFormat, "{0}", value1)

基于你的代码片段,我猜你strFormat直接相信替换mutate .它不像那样工作; 您将结果分配给原始变量,如下所示:

strFormat = Replace (strFormat, "{0}", value1)
Run Code Online (Sandbox Code Playgroud)

您还可以分配另一个变量来存储更改的结果,如下所示:

strFormat2 = Replace (strFormat, "{0}", value1)
Run Code Online (Sandbox Code Playgroud)

  • 他不需要_another_变量,只是为了更新原始字符串. (6认同)