Function std.path.baseName
Prototypes
auto baseName(R)( R path ) if (isRandomAccessRange!R && hasSlicing!R && isSomeChar!(ElementType!R) || is(StringTypeOf!R)); inout(C)[] baseName(std.path.CaseSensitive cs, C, C1)( inout(C)[] path, C1[] suffix ) pure @safe if (isSomeChar!C && isSomeChar!C1);
Parameters
Name | Description |
---|---|
cs | Whether or not suffix matching is case-sensitive. |
path | A path name. It can be a string, or any random-access range of
characters. |
suffix | An optional suffix to be removed from the file name. |
Returns
The name of the file in the path
name, without any leading
directory and with an optional suffix
chopped off.
If
is specified, it will be compared to suffix
using path
,
where filenameCmp
!cscs
is an optional template parameter determining whether
the comparison is case sensitive or not. See the
filenameCmp
documentation for details.
Examples
assert (baseName("dir/file.ext") == "file.ext"); assert (baseName("dir/file.ext", ".ext") == "file"); assert (baseName("dir/file.ext", ".xyz") == "file.ext"); assert (baseName("dir/filename", "name") == "file"); assert (baseName("dir/subdir/") == "subdir"); version (Windows) { assert (baseName(d:file.ext
) == "file.ext"); assert (baseName(d:\dir\file.ext
) == "file.ext"); }
Note
This function only strips away the specified suffix
, which
doesn't necessarily have to represent an extension
.
To remove the extension
from a path
, regardless of what the extension
is, use stripExtension
.
To obtain the filename without leading directories and without
an extension
, combine the functions like this:
assert (baseName(stripExtension("dir/file.ext")) == "file");
Standards
This function complies with the POSIX requirements for the 'basename' shell utility (with suitable adaptations for Windows paths).
Authors
Lars Tandle Kyllingstad, Walter Bright, Grzegorz Adam Hankiewicz, Thomas Kühne, Andrei Alexandrescu