我想编写一个函数,它接受一个可变字符串并检查第一个和最后一个字符是否为
"
字符。如果是,这两个字符应该用反引号字符`
替换。我已经想出了以下解决方法:fn replace_wrapping_char(s: &mut String) {
if s.len() > 1 && s.starts_with('"') && s.ends_with('"') {
unsafe {
let v = s.as_mut_vec();
v[0] = '`' as u8;
*v.last_mut().unwrap() = '`' as u8;
}
}
}
这似乎可行(是的,'`'.is_ascii()
返回true),但它使用了unsafe
并且在我看来有点丑。
是否有一种安全而简洁的方法来实现我的目标呢?
"
,那么它们是ASCII码(显然...),否则不能保证。 - Lukas Kalbertodtset_ascii_char_at(index, new_char)
,它返回一个Result<>
而不是在无法工作时发生异常。但今天似乎没有类似的东西。 - Chris Emerson