2012-02-03 101 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),它将取回你的图像