c#从字符串中拆分和检索值

时间:2011-08-18 10:58:45

标签: c# string

我有一个这样的字符串:

"http://localhost:55164/Images/photos/2/2.jpg"

我需要检索/2/中的文件名和2并将它们放入自己的字符串中。因为文件名长度是可变的,所以我一直在使用StringBuilder并且替换和substr无济于事。任何人都有快速的方法吗?

由于

6 个答案:

答案 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('/'));
}