我需要从网址获取版本没有部分。网址将如下所示" http://myweb.com/api/v1/customer"。我需要得到" 1"来自网址的价值。我怎么能这样做?
提前致谢
答案 0 :(得分:6)
您可以使用Uri
类,它具有专门用于解析uris的内置解析器,并公开了一个很好的API来检查URI的组件。
Uri uri = new UriBuilder("http://myweb.com/api/v1/customer").Uri;
string versionString = uri.Segments[2]; // v1/
当然,您可以进一步处理此选项以仅提取数字,如下一个代码段所示。这样做的好处是,在使用正则表达式解析URI时,您不必担心复杂的边缘情况。
int version = int.Parse(Regex.Match(versionString, @"\d+").Value);
以下是演示:http://ideone.com/4kgey7
答案 1 :(得分:2)
您可以使用下面的外观断言,
Regex.Match(yourstring, @"(?<=/v)\d+(?=/)").Value;
(?<=/v)
肯定的后瞻声明匹配必须以/v
\d+
匹配一个或多个数字。(?=/)
正向前瞻声明匹配必须后跟正斜杠/
字符。答案 2 :(得分:1)
如果您正在使用MVC,则可以使用属性路由:
[GET("api/v{version:int}/customer")]
public ActionResult GetCustomer(int version) {
...
答案 3 :(得分:0)
string line = "http://myweb.com/api/v1/customer"
string[] arr = line.Split('\');
foreach(string str in arr)
{
if(str[0] == 'v')
{
int v = Convert.ToInt32(str.SubString(1));
}
}
答案 4 :(得分:0)