Преобразование маршрутов Синатры в маршруты .NET - PullRequest
1 голос
/ 13 февраля 2011

Я не Regex-Ninja, и мне было интересно, можно ли будет реорганизовать мой код для преобразования маршрутов стиля Sinata /:foo/:bar в маршруты стиля .NET /{foo}/{bar}. Следующий код является моей текущей реализацией для этого, и, надеюсь, есть более чистое (может быть, регулярное выражение?) Решение.

    private static string Convert(string input)
    {
        string output = "/";
        var segments = input.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries);

        foreach (var segment in segments)
            if (segment.StartsWith(":"))
                output += "{" + segment.TrimStart(':') + "}/";
            else
                output += segment + "/";

        if (output.Length > 1)
            output = output.TrimEnd('/');

        return output;
    }

1 Ответ

2 голосов
/ 13 февраля 2011

Это то, что вы имеете в виду:

var replace = Regex.Replace("/bar/:foo/:lar", "/:([^/]*)", "/{$1}");
...