Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,959 questions

51,901 answers

573 users

How to remove the last n occurrences of a substring in a string in Rust

1 Answer

0 votes
fn remove_last_n_occurrences(mut s: String, sub: &str, mut n: usize) -> String {
    let mut positions = Vec::new();
    let mut start = 0;

    // Find all occurrences
    while let Some(pos) = s[start..].find(sub) {
        let abs_pos = start + pos;
        positions.push(abs_pos);
        start = abs_pos + sub.len();
    }

    // Remove from the end
    for &pos in positions.iter().rev() {
        if n == 0 {
            break;
        }
        let end = pos + sub.len();
        s = format!("{}{}", &s[..pos], &s[end..]);
        n -= 1;
    }

    s
}

fn remove_extra_spaces(s: &str) -> String {
    s.split_whitespace().collect::<Vec<_>>().join(" ")
}

fn main() {
    let text = "abc xyz xyz abc xyzabcxyz abc".to_string();

    let result = remove_last_n_occurrences(text, "xyz", 3);
    println!("{}", result);

    let cleaned = remove_extra_spaces(&result);
    println!("{}", cleaned);
}

 
  
   
/*
run:
   
abc xyz  abc abc abc
abc xyz abc abc abc
  
*/

 



answered 3 hours ago by avibootz

Related questions

...