Рейтинг:
8
Richard MacCutchan
Возможно, но ваш код предполагает, что в имени есть только одна точка. Если вы посмотрите в каталог проекта любого проекта C#, то увидите несколько файлов с именами, включающими две точки. Поэтому вы должны использовать что-то вроде:
string[] parts = item.FileName.Split('.');
string extension = parts[parts.Length - 1];
что будет работать для любого количества точек.
[редактировать]
Или, как отмечает F-ES Sitecore ниже, используйте
System.IO.Path.GetExtension
[/редактировать]
F-ES Sitecore
Разбиение на массив не является эффективным для памяти. В системе есть функция.Пространство имен IO, которое уже делает это (System.IO.Path.GetExtension), так что нет смысла заново изобретать колесо.
Richard MacCutchan
Мне было бы интересно узнать, какой код он использует.
F-ES Sitecore
Он начинается с последней буквы и идет назад, ища".", а затем делает подстроку в этой точке. Потенциально раздражающая вещь о GetExtension заключается в том, что она также возвращает точку. Если вы действительно этого не хотите, то можете использовать LastIndexOf вместо этого.
Richard MacCutchan
Спасибо, напомнил мне, что у меня есть ссылка на него .Чистый справочный источник так что можете сами убедиться.
Richard MacCutchan
Смотрите мой комментарий выше.