检索值我有一个这样的字符串:C#分裂和从字符串
"http://localhost:55164/Images/photos/2/2.jpg"
我需要检索的文件名和2出/2/
,并把它们转化为自己的字符串。我一直在用StringBuilder
和替换和substr无用,因为文件名长度是可变的。任何人有一个快速的方法来做到这一点?
由于
检索值我有一个这样的字符串:C#分裂和从字符串
"http://localhost:55164/Images/photos/2/2.jpg"
我需要检索的文件名和2出/2/
,并把它们转化为自己的字符串。我一直在用StringBuilder
和替换和substr无用,因为文件名长度是可变的。任何人有一个快速的方法来做到这一点?
由于
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
编辑,试图访问它就像有人条评论以下建议前检查数组长度。
该死!打我吧 –
注意:在现实生活中,你实际上会检查x的长度,而不是盲目地假设你至少有2个元素。 –
:)............. –
以“/”使用Split函数作为分离器和采取所述阵列的最后2个元件。
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];
我已经编辑后 – stukselbax
你可以做的一个快速方法是将正斜杠分割字符串。
通过这种方式,您将知道数组中的最后一项和倒数第二项是您所需要的。
这样的:
string url = "http://localhost:55164/Images/photos/2/2.jpg";
string[] urlParts = url.Split('/');
string file = urlParts[urlParts.length -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]);
恩,真好,以前不知道路径类。我喜欢第一部分,但似乎有点多余的使用它(和)拆分字符串,当拆分可以实现这两件事情。 –
我会建议使用Path
类:
string filename = Path.GetFileName(s);
string dir = Path.GetDirectoryName(s).GetFileName(s);
我建议你使用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('/'));
}
用正则表达式组,或者你可以用“/”分开 –