Si j'ai une chaîne disant "abc.txt"
, existe-t-il un moyen rapide d'obtenir une sous-chaîne juste "abc"
?
Je ne peux pas faire un fileName.IndexOf('.')
parce que le nom du fichier pourrait être "abc.123.txt"
ou quelque chose et je veux évidemment juste me débarrasser de l'extension (ie "abc.123"
).
Il y a une méthode dans le framework à cet effet, qui gardera le chemin complet sauf pour l'extension.
Si seul le nom de fichier est nécessaire, utilisez
la source
null
a une valeur magique ici. Si vous utilisezString.Empty
aka, il""
vous restera un point de fin [.
].GetFileNameWithoutExtension
est plus explicite. Bien qu'il soit agréable de connaître son effet secondaire potentiellement indésirable et l'existence d'une alternative pour l'éviter.Vous pouvez utiliser
Et puis supprimez l'extension manuellement:
la source
String.LastIndexOf fonctionnerait.
la source
foo/bar.cat/cheese
!String.LastIndexOf
est dangereux pour accomplir quelque chose comme ça. Pour les fichiers sans extension, comme @Cameron l'a indiqué ci-dessus, vos résultats peuvent ne pas être ce que vous voulez. La façon la plus sûre de le faire est d'utiliser la réponse de @ Logman ci-dessus.Si vous voulez créer un chemin complet sans extension, vous pouvez faire quelque chose comme ceci:
mais je cherche un moyen plus simple de le faire. Est-ce que quelqu'un a une idée?
la source
J'ai utilisé le code ci-dessous, moins
La sortie sera
la source
Path.Combine()
plutôt que de spécifier"\\"
.si vous souhaitez utiliser l'opération String, vous pouvez utiliser la fonction lastIndexOf () qui recherche la dernière occurrence d'un caractère ou d'une sous-chaîne. Java a de nombreuses fonctions de chaîne.
la source
Vous ne demandez peut-être pas l'API UWP. Mais dans UWP,
file.DisplayName
c'est le nom sans extensions. J'espère utile pour les autres.la source
Je sais que c'est une vieille question et
Path.GetFileNameWithoutExtension
c'est une option meilleure et peut-être plus propre. Mais personnellement, j'ai ajouté ces deux méthodes à mon projet et je voulais les partager. Cela nécessite C # 8.0 car il utilise des plages et des indices.la source
la source
la source
Cette mise en œuvre devrait fonctionner.
la source
abc.txt.pdf
? :-)