Что делает эта функция VBScript - PullRequest
1 голос
/ 28 октября 2011

У меня есть функция в 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

спасибо! * * 1004

Ответы [ 3 ]

4 голосов
/ 28 октября 2011

Выглядит как упрощенная версия метода .NET String.Format .

Он принимает строку формата с заполнителями, разделенными фигурными скобками (например, "{0} {1}"), и заменяет каждый из них по очереди соответствующим значением из массива args. Вы можете заменить его на String.Format без каких-либо изменений в функциональности.

1 голос
/ 28 октября 2011

Я преобразовал код в 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;
}

пожалуйста, дайте мне знать о любых проблемах

1 голос
/ 28 октября 2011

Он ищет в строке все, что соответствует указанному шаблону регулярных выражений, и заменяет ее другой строкой из списка, переданных в функцию.

Исходя из моих (ограниченных) навыков в регулярном выражении, онПохоже, он ищет 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.   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...