How to replace the last occurrence of a substring in a string with Rust

1 Answer

0 votes
fn replace_last_occurrence(s: &str, oldsub: &str, newsub: &str) -> String {
    if let Some(pos) = s.rfind(oldsub) {
        let mut result = String::with_capacity(s.len() - oldsub.len() + newsub.len());
         
        result.push_str(&s[..pos]);
        result.push_str(newsub);
        result.push_str(&s[pos + oldsub.len()..]);
        result
    } else {
        s.to_string()
    }
}
 
fn main() {
    let s = "Rust programming efficient programming reliable programming";
     
    let old = "programming";
    let new = "ABC";
     
    let result = replace_last_occurrence(&s, &old, &new);
     
    println!("{}", result);
}
 
 
      
/*
run:
   
Rust programming efficient programming reliable ABC
   
*/

 



answered Dec 28, 2024 by avibootz
edited Dec 28, 2024 by avibootz
...