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)
希望这对其他语言的人来说更自然一点.
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)