2012-02-03 82 views
3

嘿,我希望能夠刪除整個字符串的開頭,除了結尾。例如:C#從整個字符串中移除整個字符串

http://www.website.com/images/a_image.png 

這就是我的網址/串。我想刪除大部分字符串的第一位,所以它最終會被刪除。

a_image.png 

什麼是最可靠和最有效的方法呢?

謝謝。

+0

'stone_icon32.png'不是你的URL的一部分。 – 2012-02-03 10:51:14

+0

大部分的字符串是什麼?它是你想要的圖像名稱還是擴展名? – 2012-02-03 10:52:13

+0

使用'LastIndexOf('/')'獲取最後一個'/'的位置,然後使用'Substring'獲取所需的部分。 – ken2k 2012-02-03 10:52:32

回答

7
string str="http://www.website.com/images/a_image.png"; 
str=str.Substring(str.LastIndexOf("/")+1); 
+0

謝謝你的工作。 :) – 2012-02-03 10:55:04

+0

@DuncanPalmer老實說,Mithrandir的回答是最好也是最穩定的 – 2012-02-03 11:09:05

+0

@OskarKjellin,我認爲你的更好))) – 2012-02-03 11:11:07

9

Path.GetFileName將爲您做到這一點。

Path.GetFileName("http://www.website.com/images/a_image.png"); 

返回

a_image.png

1

假設你想要的是讓你的URL的最後一部分(即最後一個字符/後的值),那麼你可以使用String.LastIndexOf(...)方法。所以,你可以這樣做以下:

string url = @"http://www.website.com/images/a_image.png"; 

int breakIndex = url.LastIndexOf('/'); 
string lastFragment = url.Substring(breakIndex + 1); 

這會給你「a_image.png」的結果。

1

嘗試

var str = "http://www.website.com/images/a_image.png"; 
var reqdstr = str.Split('/')[str.Split('/').Count()-1]; 
+0

我不相信分裂兩次並枚舉數組將是「這樣做的有效方法」。 – 2012-02-03 10:57:28

+0

@BuhBUh你不需要分裂兩次,我只是懶惰,我寫在單行中。你可以拆分一次,並將其傳遞給一個新的變種,以代替它。 – Flowerking 2012-02-03 10:59:15

1

簡單方法(相當不安全壽):

string a = "http://www.website.com/images/a_image.png"; 
string b = a.Remove(0, a.LastIndexOf("/") + 1); 
11
Uri myuri = new Uri("http://www.website.com/images/a_image.png 
"); 

String last_part = myuri.Segments[myuri.Segments.Length-1]; 

String last_part = myuri.Segments.Last(); 
+3

哈哈,你打敗了我。比分割字符串要好得多。我只有兩個便士:'myuri.Segments.Last()'可能會更具可讀性。 – 2012-02-03 10:57:33

1

斯普利特URL字符串基於斜槓(/),這將返回包含URL的各種組件的數組。使用最後一個索引(array.length -1),它將取回你的圖像