Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Sinatra路由转换为.NET路由_.net_Regex_Routing_Sinatra - Fatal编程技术网

将Sinatra路由转换为.NET路由

将Sinatra路由转换为.NET路由,.net,regex,routing,sinatra,.net,Regex,Routing,Sinatra,我不是Regex忍者,我想知道是否有可能重构我的代码,将Sinata样式的路由/:foo/:bar转换为.NET样式的路由/{foo}/{bar}。下面的代码是我目前对此的实现,希望有一个更干净(也许是regex?)的解决方案 private static string Convert(string input) { string output = "/"; var segments = input.Split(new[] { '/' }, Str

我不是Regex忍者,我想知道是否有可能重构我的代码,将Sinata样式的路由
/:foo/:bar
转换为.NET样式的路由
/{foo}/{bar}
。下面的代码是我目前对此的实现,希望有一个更干净(也许是regex?)的解决方案

    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;
    }
这就是你的意思吗:

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