Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.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
C# 基于“,”分割字符串(Uri的路径)/&引用;_C#_Asp.net_Query String - Fatal编程技术网

C# 基于“,”分割字符串(Uri的路径)/&引用;

C# 基于“,”分割字符串(Uri的路径)/&引用;,c#,asp.net,query-string,C#,Asp.net,Query String,不知是否有人能给我指出正确的方向。我想要实现的是根据字符串中有“/”的情况拆分字符串。例如,如果代码(c#)中有:www.site.com/course/123456/216,我希望能够在代码中拆分字符串,以便将123456分配给变量param1,将216分配给param2(course是页面的“友好”名称)。如果要在字符串上添加第三个“/”,我希望它变成param3,等等 理想情况下,我希望能够将此代码放在某个地方,以便将其包含在需要它工作的任何用户控件上。为什么不直接使用split var

不知是否有人能给我指出正确的方向。我想要实现的是根据字符串中有“/”的情况拆分字符串。例如,如果代码(c#)中有:www.site.com/course/123456/216,我希望能够在代码中拆分字符串,以便将123456分配给变量param1,将216分配给param2(course是页面的“友好”名称)。如果要在字符串上添加第三个“/”,我希望它变成param3,等等


理想情况下,我希望能够将此代码放在某个地方,以便将其包含在需要它工作的任何用户控件上。

为什么不直接使用split

var valueArray = "www.site.com/course/123456/216".Split('/');
数组将使整个字符串分解

索引0将是“www.site.com”等等。

string QueryString=“1234/567/890”;
字符串[]QueryArray=QueryString.Split('/')


现在
QueryArray[0]=1234
QueryArray[1]=567
QueryArray[2]=890

好了,做出假设这些值中不包含
//code>:

var splitVals = queryString.Split('/');
var vals = new Dictionary<string, string>();
for (int i = 2; i <= splitVals.Count; i++)
{
    vals.Add(string.Format("param{0}", i), vals[i]);
}
也许你正在寻找的是:

new Uri("http://www.contoso.com/foo/bar/index.htm#search").Segments

结果是
[“/”、“foo/”、“bar/”、“index.html”]
url:
server/func2/SubFunc2

//获取路径组件。拖尾分离器。返回{“/”、“func2/”、“sunFunc2”}。

string[]pathsegments=myUri.Segments

这是非常规的,但肯定是可行的。您可以从
请求
对象获取原始URL(以及关于它的各种信息)。在这一点上,你有一个字符串,你可以用“/”来分割它,然后用它做任何你想做的事情。。。这些是子目录。还有,为什么你想要无用的变量?使用数组。您给出的示例(
www.site.com/course/123456/216
)是一个URL,而不是一个查询字符串(
www.site.com/course?param1=123456¶m2=216
)。拆分函数有什么问题吗?@newStackExchangeInstance:它们也不是子目录:)整个东西都是一个“资源标识符”因为这不是有效的C#。你是在谈论这个案例吗?我刚刚测试了它,至少在Javalsu的上一个版本之后,它是完全有效的。给定
server/func2/SubFunc2
//获取路径组件的url。拖尾分离器。返回{“/”、“func2/”、“sunFunc2”}<代码>字符串[]路径段=myUri.Segments
(char)47
似乎有些过分了。为什么不仅仅是
“/”
?请注意,我目前拥有的URL类似于www.site.com?crseidcode=123456&crseprofile=123,我正在寻找整理此URL的方法(它可能包含大量参数)。传递的参数总是整数。实际上,这就是查询字符串的用途。你可以按照你的建议将它们分开,但我认为你可能会冒着风险,让想法变得不那么可读/易懂,而没有什么好处。如果您传递了大量的参数/数据,您应该考虑使用<代码> POST <代码>请求,而不是通过QuiSQL字符串传递数据。但我知道这可能不可能,这取决于您的情况。给定
server/func2/SubFunc2
//获取路径组件的url。拖尾分离器。返回{“/”、“func2/”、“sunFunc2”}<代码>字符串[]路径段=myUri.Segments小字体:你做了parm而不是parm。哇!谢谢所有的回复!我正在考虑使用拆分函数,但我不确定是否有其他(更好)方法来实现我所追求的目标。我会开个派对,让你们都知道我过得怎么样。另外,作为一个子点,使这段代码可重用的最佳方法是什么?再次感谢你花了这么多时间。Craiggiven服务器/func2/SubFunc2的url
//获取路径组件。拖尾分离器。返回{“/”、“func2/”、“sunFunc2”}<代码>字符串[]路径段=myUri.Segments几乎可以从任何地方访问,包括静态类、过滤器等,它们将把您的友好名称(课程)放在元素0中,123456放在元素1中,216放在元素2中,可选参数放在元素3中(如果存在)。我可以向您展示如何删除第一个,但最简单的方法是:
varx=newlist(如上);x、 RemoveAt(0)
var x=新队列(如上);x、 出列()
如果您可以使用LINQ,那么以下内容将更短:
HttpContext.Current.Request.Url.AbsolutePath.Skip(1.ToArray()
对不起,忘记了在那里拆分
HttpContext.Current.Request.Url.AbsolutePath.split('/')。Skip(1.ToArray()
。您也可以使用这些段,例如
HttpContext.Current.Request.Url.segments.Select(x=>x.TrimEnd('/')).Skip(2.ToAr)‌​ray()
服务器/func2/SubFunc2的给定url
//获取路径组件。拖尾分离器。返回{“/”、“func2/”、“sunFunc2”}<代码>字符串[]路径段=myUri.Segments如果总是在/上拆分,则可以使用段。像
HttpContext.Current.Request.Url.Segments.Select(x=>x.TrimEnd('/')).Skip(2.ToArray()
Hi-people,只是想让你们知道我被拖到了另一个项目中,所以我将在接下来的几天内尝试这些建议。Cheers Folks提供的链接重定向到uri片段,而不是片段
var vals = queryString.SplitQueryString();
HttpContext.Current.Request.Url.AbsolutePath.Split('/')
new Uri("http://www.contoso.com/foo/bar/index.htm#search").Segments