我有一个这样的字符串:
"http://localhost:55164/Images/photos/2/2.jpg"
我需要检索/2/
中的文件名和2并将它们放入自己的字符串中。因为文件名长度是可变的,所以我一直在使用StringBuilder
并且替换和substr无济于事。任何人都有快速的方法吗?
由于
答案 0 :(得分:6)
string link = "http://localhost:55164/Images/photos/2/2.jpg"; // your link
string[] x = link.Split('/'); // split it into pieces at the slash
string filename = (x.Length >= 1) ? x[x.Length - 1] : null; // get the last part
string dir = (x.Length >= 2) ? x[x.Length - 2] : null; // get the 2nd last part
编辑,检查数组长度,然后尝试访问它的部分,就像评论中提到的人一样。
答案 1 :(得分:1)
你可以欺骗并使用Path
类。这更容易,同时增加了额外的可读性。
string path = "http://localhost:55164/Images/photos/2/2.jpg";
Console.WriteLine(Path.GetFileName(path));
string[] dirSplit = Path.GetDirectoryName(path).Split('\\');
Console.WriteLine(dirSplit[dirSplit.Length - 1]);
答案 2 :(得分:1)
我建议使用Path
类:
string filename = Path.GetFileName(s);
string dir = Path.GetDirectoryName(s).GetFileName(s);
答案 3 :(得分:0)
使用Split函数,使用'/'作为分隔符,并获取数组的最后两个元素。
string s = "";
string[] arr = s.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
string ans = "";
if (arr.Length > 1)
ans = arr[arr.Length - 1] + arr[arr.Length - 2];
答案 4 :(得分:0)
您可以采用的一种快捷方法是通过正斜杠拆分字符串。
通过这种方式,您将知道数组中的最后一项和倒数第二项将是您所需要的。
这样:
string url = "http://localhost:55164/Images/photos/2/2.jpg";
string[] urlParts = url.Split('/');
string file = urlParts[urlParts.length -1];
答案 5 :(得分:0)
我建议您使用为此目的量身定制的System.Uri类(提供对URI部分的轻松访问),例如,
Uri uri = new Uri("http://localhost:55164/Images/photos/2/2.jpg");
string[] segments = uri.Segments;
foreach (string segment in segments)
{
Console.WriteLine(segment.Trim('/'));
}