gpt4 book ai didi

string - 根据 Rust 中的另一个路径格式化文件名的最佳方法

转载 作者:行者123 更新时间:2023-11-29 08:18:57 24 4
gpt4 key购买 nike

有没有更简洁的写法?

use std::path::Path;

let path = Path::new("/path/to/foo.txt");
let formatted = &format!("{}%d.{}", path.file_stem().unwrap().to_str().unwrap(), path.extension().unwrap().to_str().unwrap());

assert_eq!("foo%d.txt", formatted);

(我想将/path/to/foo.txt转换成foo%d.txt)

最佳答案

不,真的没有比您拥有的更好的了。路径不是 UTF-8 字符串,并且路径可能file_stem扩展名。您必须处理所有这些情况,这就是 Rust 成为一门优秀语言的原因。

我唯一可以建议的是完全避免转换为 UTF-8 字符串。您还可以使用占位符空值或在缺少组件时有条件地采取行动:

use std::path::Path;
use std::ffi::OsStr;

fn main() {
let path = Path::new("/path/to/foo.txt");

let stem = path.file_stem().unwrap_or(OsStr::new(""));

let mut filename = stem.to_os_string();
filename.push("%d.");

if let Some(extension) = path.extension() {
filename.push(extension);
}

assert_eq!(OsStr::new("foo%d.txt"), filename);
}

关于string - 根据 Rust 中的另一个路径格式化文件名的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43019846/

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