Если у меня есть строка, говорящая "abc.txt"
, есть ли быстрый способ получить подстроку, которая просто "abc"
?
Я не могу сделать, fileName.IndexOf('.')
потому что имя файла может быть "abc.123.txt"
или что-то, и я, очевидно, просто хочу избавиться от расширения (то есть "abc.123"
).
Для этого в рамках есть метод, который сохранит полный путь за исключением расширения.
Если нужно только имя файла, используйте
источник
null
есть волшебная ценность. Если вы используетеString.Empty
aka, у""
вас останется конечная.
точка [ ].GetFileNameWithoutExtension
более явно. Хотя приятно знать о потенциально нежелательном побочном эффекте и существовании альтернативы, позволяющей избежать этого.Ты можешь использовать
А затем удалите расширение вручную:
источник
String.LastIndexOf будет работать.
источник
foo/bar.cat/cheese
!String.LastIndexOf
опасно для выполнения чего-то вроде этого. Для файлов без расширения, как было сказано выше @Cameron, ваши результаты могут быть не такими, как вы хотите. Самый безопасный способ сделать это - использовать ответ @ Logman выше.Если вы хотите создать полный путь без расширения, вы можете сделать что-то вроде этого:
но я ищу более простой способ сделать это. У кого-нибудь есть идеи?
источник
Я использовал ниже, меньше кода
Выход будет
источник
Path.Combine()
а не указав"\\"
.если вы хотите использовать строковую операцию, то вы можете использовать функцию lastIndexOf (), которая ищет последнее вхождение символа или подстроки. Java имеет множество строковых функций.
источник
Вы, возможно, не спрашиваете API UWP. Но в UWP
file.DisplayName
это имя без расширений. Надеюсь, полезно для других.источник
Я знаю, что это старый вопрос, и
Path.GetFileNameWithoutExtension
это лучший и, возможно, более чистый вариант. Но лично я добавил эти два метода в свой проект и хотел поделиться ими. Это требует C # 8.0 из-за использования диапазонов и индексов.источник
источник
источник
Эта реализация должна работать.
источник
abc.txt.pdf
? :-)