61 lines
1.6 KiB
Rust
61 lines
1.6 KiB
Rust
fn trim_me(input: &str) -> &str {
|
|
// TODO: Remove whitespace from both ends of a string
|
|
// can find the 1st not whitespace and last not whitespace and then return slice
|
|
let f = input
|
|
.find(|c: char| !c.is_whitespace())
|
|
.unwrap_or(input.len());
|
|
let r = input.rfind(|c: char| !c.is_whitespace()).unwrap_or(0);
|
|
if f < r {
|
|
&input[f..r + 1]
|
|
} else {
|
|
&input[..input.len() - f]
|
|
}
|
|
// input.trim()
|
|
}
|
|
|
|
fn compose_me(input: &str) -> String {
|
|
// TODO: Add " world!" to the string! There are multiple ways to do this.
|
|
input.to_owned() + " world!"
|
|
}
|
|
|
|
fn replace_me(input: &str) -> String {
|
|
// TODO: Replace "cars" in the string with "balloons".
|
|
input.to_owned().replace("cars", "balloons")
|
|
}
|
|
|
|
fn main() {
|
|
// You can optionally experiment here.
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn trim_a_string() {
|
|
assert_eq!(trim_me(" "), "");
|
|
assert_eq!(trim_me("Hello! "), "Hello!");
|
|
assert_eq!(trim_me(" What's up!"), "What's up!");
|
|
assert_eq!(trim_me(" Hola! "), "Hola!");
|
|
assert_eq!(trim_me("Hi!"), "Hi!");
|
|
}
|
|
|
|
#[test]
|
|
fn compose_a_string() {
|
|
assert_eq!(compose_me("Hello"), "Hello world!");
|
|
assert_eq!(compose_me("Goodbye"), "Goodbye world!");
|
|
}
|
|
|
|
#[test]
|
|
fn replace_a_string() {
|
|
assert_eq!(
|
|
replace_me("I think cars are cool"),
|
|
"I think balloons are cool",
|
|
);
|
|
assert_eq!(
|
|
replace_me("I love to look at cars"),
|
|
"I love to look at balloons",
|
|
);
|
|
}
|
|
}
|