Как вернуть строчку с конца до элемента '/'

268
09 февраля 2018, 17:44

Как вернуть строчку с конца до элемента '/'

например site.ru/page-1/image-1.jpg вернуть /image-1

Answer 1

А давайте будем думать не в терминах строк, а в терминах объектов, мы ж пишем на объектно-ориентированном языке? Ваш адрес должен быть в любом случае в объекте типа Uri.

Uri uri = new Uri("http://site.ru/page-1/image-1.jpg");
string last = uri.Segments.Last(); // image-1.jpg

Если нужно ещё и откусить расширение, то

string lastWithoutExt = Path.GetFileNameWithoutExtension(last); // image-1
Answer 2

Если на входе у вас именно абсолютный Uri, нужнен именно последний сегмент, и нужно избежать случайных совпадений в query string, то:

var url = new Uri("http://site.ru/page-1/image-1.jpg");
Console.WriteLine("/" + url.Segments.Last()); // /image-1.jpg

Разница по сравнению с поиском последнего / в обработке строк вот такого вида:

var url = new Uri("http://site.ru/page-1/image-1.jpg?some=a/b");
Console.WriteLine("/" + url.Segments.Last()); // все еще /image-1.jpg, а не /b
Answer 3
string s = @"site.ru/page-1/image-1.jpg";
int index = s.LastIndexOf(@"/");
string result = 
  (@"/" + System.IO.Path.ChangeExtension(s.Substring(index + 1), "")).Trim('.');
Answer 4
string a = "site.ru/page-1/pic.jpg";
string filename = a.Split('/')[2];
READ ALSO
Как обрезать или дописать лишние байты в строке?

Как обрезать или дописать лишние байты в строке?

Допустим, у нас есть строка в UTF-8Она должна занимать в памяти ровно 38 байт

287
Не могу составить linq-запрос

Не могу составить linq-запрос

Есть список объектов со следующей структурой(что-то вроде оповещений):

232
Конвертация универсального типа <T> в Nullable<T>?

Конвертация универсального типа <T> в Nullable<T>?

Как из метода GetValue() возвратить значение типа Nullable

207
Передача параметров в функцию BitConverter.ToUInt32

Передача параметров в функцию BitConverter.ToUInt32

Очень глупый, скорее всего, вопрос

227