繁体   English   中英

获取URL的最后一个路径

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM