Ok, ya una larga lista de respuestas, aquí es mío ;-)
quería resolver este problema:
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);
Por supuesto, todas las pathes 1-9 deben contener una cadena equivalente al final. Aquí está el método PathCombine me ocurrió:
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);
}
También creo que es bastante molesto que este manejo de cadenas se tiene que hacer manualmente, estaría interesado en la razón detrás de esto.
OMG esto es tan estúpido que "funciona" de esta manera. – Joe
[Todavía no cambia en .NET core.] (Https://github.com/dotnet/coreclr/blob/fb86c0294a999b2c7bd1e13da1fdc0d3c2f701e5/src/mscorlib/shared/System/IO/Path.cs#L189) – zwcloud
@Joe , estúpido es correcto! Además, debo señalar que [la función equivalente] (https://nodejs.org/api/path.html#path_path_join_paths) funciona bien en Node.JS ... Sacudiendo la cabeza ante Microsoft ... –