Jeśli mam ciąg mówiący "abc.txt"
, czy istnieje szybki sposób, aby uzyskać podłańcuch, który jest po prostu "abc"
?
Nie mogę zrobić, fileName.IndexOf('.')
ponieważ nazwa pliku może być "abc.123.txt"
lub coś i oczywiście chcę po prostu pozbyć się rozszerzenia (tj "abc.123"
.).
W tym celu w ramach jest metoda, która zachowa pełną ścieżkę oprócz rozszerzenia.
Jeśli potrzebna jest tylko nazwa pliku, użyj
źródło
null
Ma tutaj wartość magiczną. Jeśli użyjeszString.Empty
aka""
, pozostanie ci.
kropka [ ].GetFileNameWithoutExtension
jest bardziej wyraźny. Chociaż miło jest wiedzieć o jego potencjalnie niepożądanym skutku ubocznym i istnieniu alternatywy, aby go uniknąć.Możesz użyć
A następnie ręcznie usuń rozszerzenie:
źródło
String.LastIndexOf będzie działać.
źródło
foo/bar.cat/cheese
!String.LastIndexOf
jest niebezpieczne dla osiągnięcia czegoś takiego. W przypadku plików bez rozszerzenia, jak stwierdzono powyżej w @Cameron, wyniki mogą być inne niż oczekiwane. Najbezpieczniejszym sposobem na to jest użycie powyższej odpowiedzi @ Logman.Jeśli chcesz utworzyć pełną ścieżkę bez rozszerzenia, możesz zrobić coś takiego:
ale szukam prostszego sposobu na zrobienie tego. Czy ktokolwiek ma jakiś pomysł?
źródło
Użyłem poniżej, mniej kodu
Wyjście będzie
źródło
Path.Combine()
zamiast określać"\\"
.jeśli chcesz użyć operacji typu String, możesz użyć funkcji lastIndexOf (), która wyszukuje ostatnie wystąpienie znaku lub podłańcucha. Java ma wiele funkcji ciągów.
źródło
Być może nie pytasz interfejsu API UWP. Ale w UWP
file.DisplayName
to nazwa bez rozszerzeń. Mam nadzieję, że przydatne dla innych.źródło
Wiem, że to stare pytanie i
Path.GetFileNameWithoutExtension
jest lepszą, a może czystszą opcją. Ale osobiście dodałem te dwie metody do mojego projektu i chciałem się nimi podzielić. Wymaga to C # 8.0, ponieważ wykorzystuje zakresy i indeksy.źródło
źródło
źródło
To wdrożenie powinno działać.
źródło
abc.txt.pdf
? :-)