65.9K
CodeProject 正在变化。 阅读更多。
Home

VBScript 中的 FormatMessage 类格式化

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (1投票)

2002年2月12日

公共领域

1分钟阅读

viewsIcon

61221

一个简单的函数,用于在 VBScript 中进行 FormatMessage 类格式化

概述

最近我被迫使用 VBScript 进行大量的 ASP 编码,并且立刻就非常怀念大多数其他语言中可用的基于槽位的字符串格式化函数。

例如,在 Python 中,你可以这样做

result = "Hello %s! How are you this %s?" % (name, "morning")

更好的是,拥有命名或索引槽位,这样你就可以在不更改代码的情况下进行 I18N,或者在参数列表中不重复参数的情况下重用参数。 如果你使用“真正的”语言编程,SDK 函数 FormatMessage 会为你完成这项工作。

我决定为自己快速编写一个非常简单的 FormatMessage 类似函数。 我确信大多数使用 VBScript 编码的人都做过类似的事情。 如果你还没有这样做,请随意使用这段代码。 享受吧!

详细说明

好了,这就是它的全部。

function Fmt(str, args)
    dim res
    res = str

    dim i
    for i = 0 to UBound(args)
        res = Replace(res, "%"&CStr(i+1)&"%", args(i))
    next

    res = Replace(res, "\n", vbCrLf)
    res = Replace(res, "\t", vbTab)

    fmt = res
end function

你可以这样调用它

str = Fmt("<%1%>This is a %2%</%1%>", Array("div", "test"))

就这样了。 你使用从 1 开始编号的槽位标记,这些标记放置在 % 符号之间,例如 %1%。 如果你使用的槽位多于参数,多余的槽位将简单地保留在字符串中。 参数通过 Array 传递。 由于 VBScript 仅使用 VARIANT 类型,因此你可以将任何内容放在这里,脚本引擎将尽最大努力将其转换为字符串。

我还添加了使用 \t\n 分别表示制表符和换行的便利性。

Postscript

这段代码与 Uwe Keim 很久以前发布的一篇文章 类似。 我的方法更简单,而且我认为效率更高。

如果你对这篇文章有任何评论,可以通过 svenax@bredband.net 联系我。

© . All rights reserved.