我在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
谢谢!
答案 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;
}
请告诉我任何问题