C#除了最后一个字符外,如何删除整个字符串

3
我希望能够删除字符串的开头部分,只保留结尾部分。例如:
http://www.website.com/images/a_image.png

这是我的网址/字符串。我想要删除大部分的第一段内容,仅保留后面的部分。

a_image.png

什么是最可靠高效的方法来完成这个任务?

stone_icon32.png 不是你的URL的一部分。 - Samuel Slade
你所说的“大部分字符串”是指什么?是你想要的图像名称还是扩展名? - Stig Hausberg
使用 LastIndexOf('/') 获取最后一个 '/' 的位置,然后使用 Substring 获取所需的部分。 - ken2k
@SamuelSlade 现在已经修复了。 - Duncan Palmer
7个回答

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()可能更易读一些。 - Konrad Morawski

9

Path.GetFileName可以帮您完成此操作。

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

回传

a_image.png


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

@DuncanPalmer 说实话,Mithrandir的答案是最好和最稳定的。 - Oskar Kjellin
@OskarKjellin,我认为你的更好))) - Chuck Norris
@mesiesta 我认为这样会更快,因为它已经分成了段落。 - Oskar Kjellin

1

尝试

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

我不相信对一个数组进行两次分割并枚举会是“高效的做法”。 - Buh Buh
@BuhBUh,你不需要分隔两次,只是我太懒了,所以写成了单行。你可以只分隔一次,并将其传递给一个新的变量来处理。 - Flowerking

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

简单的方法(虽然不太安全):

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

1
将URL字符串根据斜杠(/)拆分,这将返回一个包含URL各个组件的数组。使用最后一个索引(array.length-1)来获取图像。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接