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!
Implementation
C#

Implementation edit is for fixing errors and enhancing with metadata. Please do not replace the code below with a different implementation.

Instead of changing the code of the snippet, consider creating another C# 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
import "fmt"
import "os"
import "strings"
sep := fmt.Sprintf("%c", os.PathSeparator)
p = strings.TrimSuffix(p, sep)
import "fmt"
import "path/filepath"
import "strings"
sep := fmt.Sprintf("%c", filepath.Separator)
p = strings.TrimSuffix(p, sep)
p.chomp!("/")
uses SysUtils;
begin
  p := ExcludeTrailingPathDelimiter(p);
end.
uses LazFileUtils;
begin
  p := ChompPathDelim(p);
end.
import std.string,
import std.path;
p = p.chomp(dirSeparator);
import os
if p.endswith(os.sep):
    p = p[:-1]
let p = if ::std::path::is_separator(p.chars().last().unwrap()) {
    &p[0..p.len()-1]
} else {
    p
};
use File::Spec qw();
chomp $p, File::Spec->catdir('');
if string.sub(p, -1, -1) == "/" then
	p=string.sub(p, 1, -2)
end
p = p.strip_suffix(std::path::is_separator).unwrap_or(p);
import * as path from 'path'
p = p.endsWith(path.sep) ? p.slice(0, -path.sep.length) : p
import Data.List (dropWhileEnd)
import System.FilePath (pathSeparator)
p' = dropWhileEnd (== pathSeparator) p
import 'package:path/path.dart' as path;
if (p.endsWith(path.separator)) p = p.substring(0, p.length - 1);