为什么Rust在Windows下输出路径会转义反斜杠?如何去除额外反斜杠?
问题原因
你遇到的双反斜杠问题完全是输出格式化符号选择错误导致的,和Path::new的输入方式无关:
- 你使用的
{:?}是Debug格式化符,设计目的是给开发者调试用,会自动对字符串中的转义字符做转义显示,所以反斜杠会被打印为双反斜杠。
解决方法
Rust的Path类型内置了专门用于用户友好展示的display()方法,该方法返回的结构体实现了Display trait,输出时会自动适配当前平台的路径分隔符,且不会额外添加转义字符。
你只需要把输出代码修改为如下即可:
println!("{}", Path::new("c:\\windows\\").display());
使用原始字符串输入也可以正常输出:
println!("{}", Path::new(r"c:\windows\").display());
修改后Windows平台会直接输出c:\windows\,用户复制后即可直接使用,Linux平台也会保持正斜杠的正常输出格式,完全满足跨平台需求。
内容的提问来源于stack exchange,提问作者raddevus
相关产品推荐
相关产品推荐

