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

时间:2015-10-20 10:47:43

标签: path d

我的变量路径如下:

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

它也可以是:

/foo/bar/baz/file.txt

我需要通过跨平台的方式移动到bar目录。

我发现只有一种方式,但它看起来像黑客:

writeln(mystr.replaceLast("baz" ~ dirSeparator ~ "file.txt", ""));

2 个答案:

答案 0 :(得分:4)

std.path有2个功能:buildNormalizedPathasNormalizedPath

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

答案 1 :(得分:2)

出于某种原因,使用dmd 2.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"));
    }
}