tl; dr:我如何询问Windows系统上当前的目录分隔符是什么?
不同版本的Windows似乎表现不同(例如\,/两者都在英文版本上工作,¥显然是在日文版本上,₩显然是在韩文版本上等...
有没有办法避免硬编码,而是在运行时询问Windows?
理想情况下,解决方案应该不依赖于高层次的DLL一样ShlWAPI.dll,因为下级库也取决于此.所以它应该要么依赖于kernel32.dll或ntdll.dll或等等......虽然我有一个很难找到任何东西可言,无论是在高位还是处于较低的水平.
一些小实验告诉我,它是Win32子系统(即kernel32.dll......或者它可能RtlDosPathNameToNtPathName_U在ntdll.dll?不确定,没有测试...),它将正斜杠转换为反斜杠,而不是内核.(前缀\\?\使得以后在路径中无法使用正斜杠 - 而NT本机用户模式API也会因正斜杠而失败.)
所以显然它不是"内置于"Windows,而只是一个兼容性功能 - 这意味着你不能盲目地用斜线代替反斜杠,因为任何随机前缀\\?\到路径的程序都会自动在正斜杠上打破.
我对这个问题的结论有不同的感受,但我只是想我会提到它.
(我将其标记为"路径分隔符",即使这在技术上是不正确的,因为路径分隔符用于分隔路径,而不是目录(;vs. \).希望人们得到我的意思.)
如何在c#中确定字符串是否是正则表达式之外的本地文件夹字符串或网络字符串?
例如:
我有一个字符串,可以是"c:\a"或"\\foldera\folderb"