[英]Get the last path of URL
我正在使用以下代码,它对大多数服务工作得很好但是在URL中有一段时间我得到了User; v = 2; mp我需要得到User ,我应该如何处理它? 我需要一些通用的解决方案,因为我猜在其他一些网址中我可以得到不同的空间包机
如果是URL
https://ldmrrt.ct/odata/GBSRM/User;v=2;mp
string serviceName = _uri.Segments.LastOrDefault();
如果URL是https://ldmrrt.ct/odata/GBSRM/User,它的工作正常......
只需更换:
string serviceName = _uri.Segments.LastOrDefault();
附:
string serviceName = _uri.Segments.LastOrDefault().Split(new[]{';'}).First();
如果你需要更灵活的东西,你可以指定要包含或跳过的字符,你可以做这样的事情(稍微凌乱,你应该把它的一部分作为单独的变量提取等):
// Note the _ and - characters in this example:
Uri _uri = new Uri("https://ldmrrt.ct/odata/GBSRM/User_ex1-ex2;v=2;mp");
// This will return a string: "User_ex1-ex2"
string serviceName =
new string(_uri.Segments
.LastOrDefault()
.TakeWhile(c => Char.IsLetterOrDigit(c)
|| (new char[]{'_', '-'}).Contains(c))
.ToArray());
更新,以回应我的理解为下面的问题:):
您可以使用String.Replace(),或者您可以通过执行以下操作来使用过滤:
// Will return: "Userexex2v=2mp"
string serviceName =
new string(_uri.Segments
.LastOrDefault()
.Where(c =>
!Char.IsPunctuation(c) // Ignore punctuation
// ..and ignore any "_" or "-":
&& !(new char[]{'_', '-'}).Contains(c))
.ToArray());
如果你在生产中使用它,请注意,一定要清理一下,例如分成几个变量,并在使用前定义你的char [] - 数组。
在您的情况下,您可以尝试拆分“User; v = 2; mp”字符串。
string [] split = words.Split(new Char [] { ';' });
返回一个字符串数组,该数组包含此实例中由指定的Unicode字符数组的元素分隔的子字符串。
split.First();
要么:
split[0];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.