我的变量路径如下:
D:\foo\bar\baz\file.txt
它也可以是:
/foo/bar/baz/file.txt
我需要通过跨平台的方式移动到bar
目录。
我发现只有一种方式,但它看起来像黑客:
writeln(mystr.replaceLast("baz" ~ dirSeparator ~ "file.txt", ""));
答案 0 :(得分:4)
std.path
有2个功能:buildNormalizedPath
和asNormalizedPath
。
它们之间的唯一区别是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"));
}
}