是否有一种简单的方法来拆分保留分隔符的字符串? 取而代之的是:拆分保持分隔符的字符串
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();
与["Ten", "Million", "Questions", "Let's", "celebrate", "all", "we've", "done", "together"]
结果。
我想的东西,给我:
["Ten", ".", " ", "Million", ".", " ", "Questions", ".", " ", "Let's", " ", "celebrate", " ", "all", " ", "we've", " ", "done", " ", "together", "."]
。
我想那样的代码(它假定字符串开头一个字母和一个“non'字母结尾):
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;
}
这让我几乎我前面写的结果,但它的好:
["Ten", ". ", "Million", ". ", "Questions", ". ", "Let's", " ", "celebrate", " ", "all", " ", "we've", " ", "done", " ", "together", "."]
但是有没有更好的方法来编码?因为我试图枚举v2,但它不起作用,并且在for循环中使用j看起来很粗糙。
正则表达式是你所需要的。 – Onilol