将Sinatra路由转换为.NET路由
我不是Regex忍者,我想知道是否有可能重构我的代码,将Sinata样式的路由将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
/: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}");