给定以下两个字符串:
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/