我正在尝试为文件路径创建一个新名称。一切正常,除了当我尝试格式化OsStrs 时,它会自动将它们放在引号中。这已经让我发疯了几个小时,无论我使用{:?}格式还是{:#?},它都不会改变任何事情。我也尝试过使用.unwrap().to_str(),但输出更糟糕。有谁知道如何摆脱这些引号?
这是我的代码:
use std::path::Path;
fn main() {
let path = Path::new("/home/user/test/something.txt");
let mut pathbuf = path.to_path_buf();
pathbuf.set_file_name(&format!(
"{:?}_{}.{:?}",
path.file_stem().unwrap(),
4,
path.extension().unwrap()
));
println!("{}", pathbuf.display());
}
Run Code Online (Sandbox Code Playgroud)
这是当前的输出:
/home/user/test/"something"_4."txt"
Run Code Online (Sandbox Code Playgroud)
但我需要它是:
/home/user/test/something_4.txt
Run Code Online (Sandbox Code Playgroud)
OsStr实现了该Debug特征,但没有Display,我认为因为OsStr不能保证是有效的UTF-8。该OsStr::to_str方法执行您想要的操作。
pathbuf.set_file_name(&format!(
"{}_{}.{}",
path.file_stem().unwrap().to_str().unwrap(),
4,
path.extension().unwrap().to_str().unwrap(),
));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4282 次 |
| 最近记录: |