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