baseName

fnauto baseName(R)(return scope R path) if (isRandomAccessRange!R && hasSlicing!R && isSomeChar!(ElementType!R) && !isSomeString!R)

Parameters

csWhether or not suffix matching is case-sensitive.
pathA path name. It can be a string, or any random-access range of characters.
suffixAn 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 suffix is specified, it will be compared to path using filenameCmp!cs, where cs is an optional template parameter determining whether the comparison is case sensitive or not. See the

filenameCmp documentation for details.

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).

fnauto baseName(C)(return scope C[] path) if (isSomeChar!C)

ditto

fninout(C)[] baseName(CaseSensitive cs = CaseSensitive.osDefault, C, C1)(return scope inout(C)[] path, in C1[] suffix) if (isSomeChar!C && isSomeChar!C1) @safe pure

ditto