c # расщепление и извлечение значений из строки - PullRequest
0 голосов
/ 18 августа 2011

У меня есть такая строка:

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

Мне нужно извлечь имя файла и 2 из /2/ и поместить их в свои собственные строки. Я возился с StringBuilder и заменял и substr безрезультатно, так как длина имени файла является переменной. У кого-нибудь есть быстрый способ сделать это?

Спасибо

Ответы [ 6 ]

6 голосов
/ 18 августа 2011
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 голос
/ 18 августа 2011

Я бы предложил использовать класс Path:

string filename = Path.GetFileName(s);
string dir = Path.GetDirectoryName(s).GetFileName(s);
1 голос
/ 18 августа 2011

Вы можете обмануть и использовать класс 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 голосов
/ 18 августа 2011

Я предлагаю вам использовать класс 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('/'));
}
0 голосов
/ 18 августа 2011

Один из быстрых способов сделать это - разделить строку косой чертой.

Таким образом, вы будете знать, что последний элемент в массиве и второй-последний элемент - это то, что вам нужно.

такой, что:

string url = "http://localhost:55164/Images/photos/2/2.jpg";
string[] urlParts = url.Split('/');
string file = urlParts[urlParts.length -1];
0 голосов
/ 18 августа 2011

используйте функцию 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];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...