首页 > 解决方案 > 如何从 2 个不同的字符串中获取字典中的值

问题描述

我有 2 个字符串

string str="nl/vacature/admin/Employee/home/details/"

和另一个

string template ="nl/vacature/{model}/{controller}/{Action}/{Method}/"

我在寻找

model=admin,controller=Employee,Action=home,Method=details

在对象或键值格式的字典中。它们的 URL 和模板键可能以不同的顺序排列

string template ="vacature/jobcount/{controller}/{Action}/{model}/{Method}/"

string str ="vacature/jobcount/Employee/home/admin/details/"

标签: c#regexstring

解决方案


这是一个正则表达式解决方案,但您需要稍微更改模板。

string url = "nl/vacature/admin/Employee/home/details/";
string template = "nl/vacature/(?<Model>.*?)/(?<Controller>.*?)/(?<Action>.*?)/(?<Method>.*?)/";
var matches = Regex.Match(url, template).Groups.Cast<Group>().Where(g => !int.TryParse(g.Name, out _)).ToDictionary(m => m.Name, m => m.Value);
// Dictionary<string, string>(4) { { "Model", "admin" }, { "Controller", "Employee" }, { "Action", "home" }, { "Method", "details" } }

但是,外部解析库可能更合适。您可以找到一些 URL 解析器而不是使用正则表达式。


推荐阅读