Ok, đã là một danh sách dài các câu trả lời, đây là của tôi ;-)
tôi muốn giải quyết vấn đề này:
string sample1 = "configuration/config.xml";
string sample2 = "/configuration/config.xml";
string sample3 = "\\configuration/config.xml";
string dir1 = "c:\\temp";
string dir2 = "c:\\temp\\";
string dir3 = "c:\\temp/";
string path1 = PathCombine(dir1, sample1);
string path2 = PathCombine(dir1, sample2);
string path3 = PathCombine(dir1, sample3);
string path4 = PathCombine(dir2, sample1);
string path5 = PathCombine(dir2, sample2);
string path6 = PathCombine(dir2, sample3);
string path7 = PathCombine(dir3, sample1);
string path8 = PathCombine(dir3, sample2);
string path9 = PathCombine(dir3, sample3);
Tất nhiên, tất cả các đường 1-9 phải chứa một chuỗi tương đương ở cuối. Dưới đây là phương pháp PathCombine tôi đến với:
private string PathCombine(string path1, string path2)
{
if (Path.IsPathRooted(path2))
{
path2 = path2.TrimStart(Path.DirectorySeparatorChar);
path2 = path2.TrimStart(Path.AltDirectorySeparatorChar);
}
return Path.Combine(path1, path2);
}
Tôi cũng nghĩ rằng nó là khá khó chịu mà xử lý chuỗi này phải được thực hiện bằng tay, tôi muốn được quan tâm đến lý do đằng sau này.
OMG điều này thật ngu ngốc đến nỗi nó "hoạt động" theo cách này. – Joe
[Nó vẫn không thay đổi trong lõi .NET.] (Https://github.com/dotnet/coreclr/blob/fb86c0294a999b2c7bd1e13da1fdc0d3c2f701e5/src/mscorlib/shared/System/IO/Path.cs#L189) – zwcloud
@Joe , ngu ngốc là đúng! Ngoài ra, tôi phải chỉ ra rằng [chức năng tương đương] (https://nodejs.org/api/path.html#path_path_join_paths) hoạt động tốt trong Node.JS ... Lắc đầu với Microsoft ... –