Gibt es eine einfache Möglichkeit, eine Zeichenkette unter Beibehaltung der Trennzeichen zu teilen? Statt dessen:Eine Zeichenkette aufteilen, wobei die Trennzeichen beibehalten werden
let texte = "Ten. Million. Questions. Let's celebrate all we've done together.";
let v: Vec<&str> = texte.split(|c: char| !(c.is_alphanumeric() || c == '\'')).filter(|s| !s.is_empty()).collect();
, die mit ["Ten", "Million", "Questions", "Let's", "celebrate", "all", "we've", "done", "together"]
führt.
würde ich etwas, das mir gibt:
["Ten", ".", " ", "Million", ".", " ", "Questions", ".", " ", "Let's", " ", "celebrate", " ", "all", " ", "we've", " ", "done", " ", "together", "."]
.
ich diese Art von Code bin versucht (die Zeichenfolge annimmt, beginnt mit einem Buchstaben und endet mit einem ‚non'-Brief):
let texte = "Ten. Million. Questions. Let's celebrate all we've done together. ";
let v1: Vec<&str> = texte.split(|c: char| !(c.is_alphanumeric() || c == '\'')).filter(|s| !s.is_empty()).collect();
let v2: Vec<&str> = texte.split(|c: char| c.is_alphanumeric() || c == '\'').filter(|s| !s.is_empty()).collect();
let mut w: Vec<&str> = Vec::new();
let mut j = 0;
for i in v2 {
w.push(v1[j]);
w.push(i);
j = j+1;
}
Es mir, dass ich früher schrieb fast das Ergebnis gibt, aber es ist gut :
["Ten", ". ", "Million", ". ", "Questions", ". ", "Let's", " ", "celebrate", " ", "all", " ", "we've", " ", "done", " ", "together", "."]
Gibt es jedoch eine bessere Möglichkeit, das zu programmieren? Weil ich versucht habe, auf v2 aufzuzählen, aber es hat nicht funktioniert, und es sieht grob aus, j in der for-Schleife zu verwenden.
Regex ist, was Sie brauchen. – Onilol