簡體   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