Logo

Programming-Idioms

Remove last character from string p, if this character is the file path separator of current platform.

Note that this also transforms unix root path "/" into the empty string!
New implementation

Be concise.

Be useful.

All contributions dictatorially edited by webmasters to match personal tastes.

Please do not paste any copyright violating material.

Please try to avoid dependencies to third-party libraries and frameworks.

Other implementations
using System.IO;
p.TrimEnd(Path.DirectorySeparatorChar);
import std.string,
import std.path;
p = p.chomp(dirSeparator);
import 'package:path/path.dart' as path;
if (p.endsWith(path.separator)) p = p.substring(0, p.length - 1);
import "fmt"
import "path/filepath"
import "strings"
sep := fmt.Sprintf("%c", filepath.Separator)
p = strings.TrimSuffix(p, sep)
import "fmt"
import "os"
import "strings"
sep := fmt.Sprintf("%c", os.PathSeparator)
p = strings.TrimSuffix(p, sep)
import Data.List (dropWhileEnd)
import System.FilePath (pathSeparator)
p' = dropWhileEnd (== pathSeparator) p
import * as path from 'path'
p = p.endsWith(path.sep) ? p.slice(0, -path.sep.length) : p
if string.sub(p, -1, -1) == "/" then
	p=string.sub(p, 1, -2)
end
uses SysUtils;
begin
  p := ExcludeTrailingPathDelimiter(p);
end.
uses LazFileUtils;
begin
  p := ChompPathDelim(p);
end.
use File::Spec qw();
chomp $p, File::Spec->catdir('');
import os
if p.endswith(os.sep):
    p = p[:-1]
p.chomp!("/")
let p = if ::std::path::is_separator(p.chars().last().unwrap()) {
    &p[0..p.len()-1]
} else {
    p
};
p = p.strip_suffix(std::path::is_separator).unwrap_or(p);