Получите имя файла от строки URI в C#

В настоящий момент нет официального способа сделать это, но вы можете использовать небольшой трюк, чтобы достичь этого! Помните, что это экспериментально, и у него есть некоторые ограничения ... (проверьте эту ссылку , если вы беспокоитесь о совместимости с навигатором)

Что вы можете сделать, это использовать селектор CSS3: псевдо classe nth-child()

#list>* {
  display: inline-block;
  padding: 20px 28px;
  margin-right: 5px;
  border: 1px solid #bbb;
  background: #ddd;
  color: #444;
  margin: 0.4em 0;
}

#list :nth-child(-n+4) {
  color: #600b90;
  border: 1px dashed red;
  background: orange;
}

The oranges elements are the previous sibling li selected using li:nth-child(-n+4)

1

2

3

4
5

6

7

8

9

Ограничения

  • Вы не можете выбрать предыдущие элементы основанный на классах следующих элементов
  • Это то же самое для псевдо классов

192
задан paulwhit 9 July 2009 в 07:07
поделиться

3 ответа

Вы можете просто создать объект System.Uri и использовать IsFile для проверки, что это файл, а затем Uri.LocalPath для извлечения имени файла.

Это намного безопаснее, так как это дает вам возможность проверить правильность URI.


Изменить в ответ на комментарий:

Чтобы получить только полное имя файла, я бы использовал:

Uri uri = new Uri(hreflink);
if (uri.IsFile) {
    string filename = System.IO.Path.GetFileName(uri.LocalPath);
}

Это выполняет за вас всю проверку ошибок и не зависит от платформы. Все особые случаи решаются за вас быстро и легко.

372
ответ дан 23 November 2019 в 05:29
поделиться

Простой и прямой:

            Uri uri = new Uri(documentAttachment.DocumentAttachment.PreSignedUrl);
            fileName = Path.GetFileName(uri.LocalPath);
0
ответ дан 23 November 2019 в 05:29
поделиться
using System.IO;

private String GetFileName(String hrefLink)
{
    return Path.GetFileName(hrefLink.Replace("/", "\\"));
}

Это предполагает, конечно, что вы разобрали имя файла.

РЕДАКТИРОВАТЬ # 2:

using System.IO;

private String GetFileName(String hrefLink)
{
    return Path.GetFileName(Uri.UnescapeDataString(hrefLink).Replace("/", "\\"));
}

Это должно обрабатывать пробелы и тому подобное в имени файла.

8
ответ дан 23 November 2019 в 05:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: