Sie können die as_str
Methode auf dem Chars
Iterator verwenden, um eine &str
Scheibe zurück zu bekommen, nachdem Sie auf dem Iterator verstärkt haben. So überspringen die ersten start
Zeichen, können Sie
let s = "Some text to slice into";
let mut iter = s.chars();
iter.by_ref().nth(start); // eat up start values
let slice = iter.as_str(); // get back a slice of the rest of the iterator
Jetzt anrufen, wenn Sie auch die Länge begrenzen wollen, müssen Sie zuerst die Byte-Position des length
Charakter, um herauszufinden:
let end_pos = slice.char_indices().nth(length).map(|(n, _)| n).unwrap_or(0);
let substr = &slice[..end_pos];
Dies könnte ein kleiner Kreisverkehr sein, aber Rust versteckt nichts vor Ihnen, das CPU-Zyklen in Anspruch nehmen könnte. Das heißt, ich frage mich, warum es noch keine Kiste gibt, die eine substr
Methode anbietet.
Sieht nicht 'Zeichen()', danke! Wäre es auch möglich, den Char-Index einem Byte-Offset zuzuordnen und daraus ein Slice zu erstellen? – laktak
@laktak, Sie können 'str :: char_indices' dafür verwenden. https://doc.rust-lang.org/std/primitive.str.html#method.char_indices – WiSaGaN