Path D:移动到路径顶层的跨平台方式?

Path D:移动到路径顶层的跨平台方式?,path,d,Path,D,我得到了变量中的路径,如: D:\foo\bar\baz\file.txt 也可以是: /foo/bar/baz/file.txt 我需要一种跨平台的方式,可以移动到bar目录 我只找到了一种方法,但它看起来像黑客: writeln(mystr.replaceLast(“baz”~dirSeparator~“file.txt”,”)出于某种原因,使用DMD2.068.2的dpaste对此不太满意。但这是正确的代码 import std.path; import std.stdio; void

我得到了变量中的路径,如:

D:\foo\bar\baz\file.txt

也可以是:

/foo/bar/baz/file.txt

我需要一种跨平台的方式,可以移动到
bar
目录

我只找到了一种方法,但它看起来像黑客:


writeln(mystr.replaceLast(“baz”~dirSeparator~“file.txt”,”)

出于某种原因,使用DMD2.068.2的dpaste对此不太满意。但这是正确的代码

import std.path;
import std.stdio;

void main() {
    version(Posix) {
        writeln(buildNormalizedPath("/a/b/c", "../d"));
    } else version(Windows) {
        writeln(buildNormalizedPath("c:\\\\a\\b\\c", "..\\d"));
    }
}
具有两个功能:和


它们之间唯一的区别是
asNormalizedPath
不会分配内存。

谢谢!看起来像
stringpath2=buildNormalizedPath(path1,`..\`)为我工作。