2010-08-02 34 views
43

Với chuỗi này:Làm cách nào để lấy phần cuối của chuỗi?

http://s.opencalais.com/1/pred/BusinessRelationType 

Tôi muốn để có được những phần cuối cùng của nó: "BusinessRelationType"

Tôi đã suy nghĩ về đảo ngược toàn bộ chuỗi sau đó tìm kiếm đầu tiên "/", mất tất cả mọi thứ ở bên trái của điều đó và đảo ngược điều đó. Tuy nhiên, tôi hy vọng có một phương pháp tốt hơn/ngắn gọn hơn. Suy nghĩ?

Xin cảm ơn, Paul

Trả lời

98

một liner với LINQ:

string lastPart = text.Split('/').Last(); 
37

Bạn có thể sử dụng String.LastIndexOf.

int position = s.LastIndexOf('/'); 
if (position > -1) 
    s = s.Substring(position + 1); 

Một tùy chọn khác là sử dụng Uri, nếu đó là những gì bạn cần. Này có một lợi ích của việc phân tích các bộ phận khác của uri, và đối phó tốt với chuỗi truy vấn, ví dụ như: BusinessRelationType?q=hello world

Uri uri = new Uri(s); 
string leaf = uri.Segments.Last(); 
14

Bạn có thể sử dụng string.LastIndexOf để tìm người cuối cùng/và sau đó Substring để có được mọi thứ sau nó:

int index = text.LastIndexOf('/'); 
string rhs = text.Substring(index + 1); 

Lưu ý rằng khi LastIndexOf trả về -1 nếu không tìm thấy giá trị, dòng thứ hai này sẽ trả lại toàn bộ chuỗi nếu không có/trong văn bản.

3
if (!string.IsNullOrEmpty(url)) 
    return url.Substring(url.LastIndexOf('/') + 1); 
return null; 
9

Đây là một cách khá chính xác để làm điều này:

str.Substring(str.LastIndexOf("/")+1); 
1

Hoặc bạn có thể sử dụng biểu thức chính quy /([^/]*?)$ để tìm trận đấu

+0

Tính không ổn định, nhưng bạn không cần nó ở đây. '[^ /] * $' sẽ làm. – Kobi

33

Bất cứ khi nào tôi thấy mình viết mã như LastIndexOf("/"), tôi có cảm giác mũ Tôi có thể làm một cái gì đó không an toàn, và có khả năng là một phương pháp tốt hơn đã có sẵn.

Khi bạn đang làm việc với URI, tôi khuyên bạn nên sử dụng lớp học System.Uri. Điều này cung cấp cho bạn xác thực và an toàn, dễ dàng truy cập vào bất kỳ phần nào của URI.

Uri uri = new Uri("http://s.opencalais.com/1/pred/BusinessRelationType"); 
string lastSegment = uri.Segments.Last(); 
2

Một mẹo nhỏ cho bất kỳ người ngớ ngẩn hoặc sự không tuân theo (hoặc bất cứ ai gần đây đã từ bỏ cà phê và là ngớ ngẩn, sự không tuân theo, cáu kỉnh ... như bản thân mình) - đường dẫn file Windows sử dụng một '\' ... tất cả các ví dụ ở đây, mặt khác, sử dụng '/'.

Vì vậy, hãy sử dụng '\\' để kết thúc đường dẫn tệp Windows! :)

Các giải pháp ở đây là hoàn hảo và đầy đủ, nhưng có lẽ điều này có thể ngăn chặn một số linh hồn nghèo khác lãng phí một giờ như tôi vừa làm!

+2

Sử dụng @ "\ path \ to \ something" là một cách sạch hơn theo ý kiến ​​của tôi :) – AntoineLev

0
Path.GetFileName 

xem xét/và \ làm dấu tách.

Path.GetFileName ("http://s.opencalais.com/1/pred/BusinessRelationType") = 
"BusinessRelationType" 
Các vấn đề liên quan