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
import static java.io.File.separatorChar;
int n = p.length() - 1;
if (n != 0 && p.charAt(n) == separatorChar)
    p = p.substring(0, n);
if string.sub(p, -1, -1) == "/" then
	p=string.sub(p, 1, -2)
end
uses LazFileUtils;
begin
  p := ChompPathDelim(p);
end.
uses SysUtils;
begin
  p := ExcludeTrailingPathDelimiter(p);
end.
use File::Spec qw();
chomp $p, File::Spec->catdir('');
import os
if p.endswith(os.sep):
    p = p[:-1]
p.chomp!("/")
p = p.strip_suffix(std::path::is_separator).unwrap_or(p);
let p = if ::std::path::is_separator(p.chars().last().unwrap()) {
    &p[0..p.len()-1]
} else {
    p
};