pub fn sentences(s: String) -> Vec<String> {
let mut pos: usize = 0;
let mut sentence_list: Vec<String> = Vec::new();
let charlist = s.chars().collect::<Vec<char>>();
let l = charlist.len();
while pos < l {
let p: usize;
let q: usize;
let e: usize;
let instring: String = charlist[pos..].iter().collect();
match instring.chars().position(|c| c == '.') {
Some(z) => {
p = pos + z;
},
None => {
p = l;
},
}
match instring.chars().position(|c| c == '?') {
Some(z) => {
q = pos + z;
},
None => {
q = l;
},
}
match instring.chars().position(|c| c == '!') {
Some(z) => {
e = pos + z;
},
None => {
e = l;
},
}
let minvec = vec![p, q, e];
let end: usize = *minvec.iter().min().unwrap() ;
let outstring: String = charlist[pos..end].iter().collect();
if outstring.trim() != "" {
sentence_list.push(outstring.trim().to_string());
}
pos = end + 1;
}
if sentence_list.len() == 0 {
sentence_list.push(s);
}
sentence_list
}