我想知道如何在Rust中删除字符串的第一个和最后一个字符。
例如:
输入:
"Hello World"
输出:
"ello Worl"
.chars()
迭代器,并忽略第一个和最后一个字符:fn rem_first_and_last(value: &str) -> &str {
let mut chars = value.chars();
chars.next();
chars.next_back();
chars.as_str()
}
对于零或一个字符的字符串,它将返回空字符串,并且它将正确处理多字节Unicode字符。 在playground上查看其运行情况。
.chars()
替换为.graphemes(true)
,使用unicode分段包。 - kmdrekofn main() {
let string: &str = "Hello World";
let first_last_off: &str = &string[1..string.len() - 1];
println!("{}", first_last_off);
}
我取出了字符串中直到倒数第二个字符的所有字符。
if string.is_empty() { "" }
- Henry&string[1..];
也可以工作。 - gberth......甚至平凡的解决方案
也适用于Unicode字符:
let mut s = "Hello World".to_string();
s.pop(); // remove last
if s.len() > 0 {
s.remove(0); // remove first
}
你也可以使用 split_at()。
let msg = "Hello, world!";
let msg = msg.split_at(msg.len() - 1);
let msg = msg.0.split_at(1);
println!("{}", msg.1);
ello, world
split_at()
返回以下内容:(&str, &str)
。
let (msg, _) = msg.split_at(msg.len() - 1); let (_, msg) = msg.split_at(1)
,但由于这会对非ASCII字符产生panic,因此在大多数情况下,我更倾向于使用kmdreko的答案。 - trentJ
和!
是ASCII字符。尝试使用Я ем черничное варенье
或블루 베리 잼 먹고 있어요
,你就会明白我的意思。 - trent