string - 如何从 Rust 中的另一个字符串中删除单个尾随字符串?

标签 string rust

给定以下两个字符串:

let subject: &str = "zoop-12";
let trail: &str "-12";

我将如何移除 trail来自 subject只有一次?我只想在 subject 的情况下这样做末尾有这些字符,因此在这种情况下,我不希望删除任何内容:
let subject: &str "moop-12loop";
let not_a_trail: &str = "-12";

我可以接受 String&str ,但我选择使用 &str为简洁起见。

最佳答案

您的规范与 trim_end_matches 非常相似,但您只想修剪一个后缀,而 trim_end_matches将修剪所有这些。

这是一个使用 ends_with 的函数连同切片以仅删除一个后缀:

fn remove_suffix<'a>(s: &'a str, p: &str) -> &'a str {
    if s.ends_with(p) {
        &s[..s.len() - p.len()]
    } else {
        s
    }
}

切片永远不会 panic ,因为如果模式匹配,s[s.len() - p.len()]保证在字符边界上。

关于string - 如何从 Rust 中的另一个字符串中删除单个尾随字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59330671/

相关文章:

java - SharedPreferences 类型中的方法 getLong(String, long) 不适用于参数 (String)

使用动态函数复制字符串

rust - 如何建模复杂的递归数据结构(图形)?

reference - 如何在 Rust 中以最惯用的方式将 Option<&T> 转换为 Option<T>?

javascript - 将数字视为字符串

string - 为什么 Powershell 用空格替换逗号?

python - 将字符串附加到 unicode 字符串列表

rust - 创建 NaN 时如何 panic ?

rust - 运行 'rustup doc' 时拒绝访问

rust - 是否允许多态变量?