什么是VBScript功能

时间:2011-10-28 04:11:26

标签: c# vbscript

我在VBScript中有一个函数,它在做什么?如何使用C#2.0简化它。

Function FormatString(format, args)
    Dim RegExp, result

    result = format

    Set RegExp = New RegExp 

    With RegExp
        .Pattern = "\{(\d{1,2})\}"
        .IgnoreCase = False
        .Global = True
    End With

    Set matches = RegExp.Execute(result)

    For Each match In matches   
        dim index
        index = CInt(Mid(match.Value, 2, Len(match.Value) - 2))
        result = Replace(result, match.Value, args(index))
    Next
    Set matches = nothing
    Set RegExp = nothing

    FormatString = result
End Function

谢谢!

3 个答案:

答案 0 :(得分:4)

看起来像.NET String.Format方法的简化版。

它采用带有大括号分隔占位符的格式字符串(例如"{0} {1}"),并依次用args数组中的相应值替换每个占位符。您可能可以将其换成String.Format,而不会对功能进行任何更改。

答案 1 :(得分:1)

它在字符串中搜索与指定的正则表达式模式匹配的所有内容,并将其替换为传入函数的列表中的其他字符串。

基于我的(有限的)正则表达式技能,它似乎在输入字符串中查找1或2位数字,并将其替换为传入函数的数组中的值。

以下是MSDN的一些文档。 http://msdn.microsoft.com/en-us/library/hs600312.aspx

可以使用此处记录的String.Format替换http://msdn.microsoft.com/en-us/library/system.string.format.aspx

来自使用链接页面的示例。

DateTime dat = new DateTime(2012, 1, 17, 9, 30, 0); 
string city = "Chicago";
int temp = -16;
string output = String.Format("At {0} in {1}, the temperature was {2} degrees.",
                              dat, city, temp);
Console.WriteLine(output);
// The example displays the following output:
//    At 1/17/2012 9:30:00 AM in Chicago, the temperature was -16 degrees.   

答案 2 :(得分:1)

我将代码转换为C#

static string FormatString(string format, string[] args)
{
    System.Text.RegularExpressions.Regex RegExp;
    System.Text.RegularExpressions.MatchCollection matches;
    string result;

    result = format;

    RegExp = new System.Text.RegularExpressions.Regex(@"\{(\d{1,2})\}", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
    matches = RegExp.Matches(result);

    foreach (System.Text.RegularExpressions.Match match in matches)
    {
        int index;

        index = Convert.ToInt32(match.Value.Substring(1, match.Value.Length - 1));
        result = result.Replace(match.Value, args[index]);
    }

    matches = null;
    RegExp = null;

    return result;
}

请告诉我任何问题