2011-08-18 70 views
0

检索值我有一个这样的字符串:C#分裂和从字符串

"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 

编辑,试图访问它就像有人条评论以下建议前检查数组长度。

+0

该死!打我吧 –

+0

注意:在现实生活中,你实际上会检查x的长度,而不是盲目地假设你至少有2个元素。 –

+0

:)............. –

0

以“/”使用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]; 
+0

我已经编辑后 – stukselbax

0

你可以做的一个快速方法是将正斜杠分割字符串。

通过这种方式,您将知道数组中的最后一项和倒数第二项是您所需要的。

这样的:

string url = "http://localhost:55164/Images/photos/2/2.jpg"; 
string[] urlParts = url.Split('/'); 
string file = urlParts[urlParts.length -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]); 
+0

恩,真好,以前不知道路径类。我喜欢第一部分,但似乎有点多余的使用它(和)拆分字符串,当拆分可以实现这两件事情。 –

1

我会建议使用Path类:

string filename = Path.GetFileName(s); 
string dir = Path.GetDirectoryName(s).GetFileName(s); 
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('/')); 
}