gpt4 book ai didi

rust - 如何打印不带引号的 OsStr?

转载 作者:行者123 更新时间:2023-12-05 01:55:21 27 4
gpt4 key购买 nike

我正在尝试为文件路径创建一个新名称。一切正常,除了当我尝试格式化 OsStr 时,它会自动将它们放在引号中。这让我发疯了几个小时,无论我使用 {:?} 格式还是 {:#?},它都没有改变任何事情。我也尝试使用 .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());
}

这是当前输出:

/home/user/test/"something"_4."txt"

但我需要的是:

/home/user/test/something_4.txt

最佳答案

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(),
));

关于rust - 如何打印不带引号的 OsStr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70266860/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com