jingxun
3 years ago
1 changed files with 72 additions and 0 deletions
@ -0,0 +1,72 @@ |
|||
fn main() { |
|||
let mut s = String::from("hello world"); |
|||
let word = first_word(&s); |
|||
let first_word = get_first_word(&s); |
|||
let re_firstw = re_first_word(&s); |
|||
let sec_word = second_word(&s); |
|||
let s1 = "hello world"; |
|||
let word_value = slice_first(s1); |
|||
println!("{}", word); |
|||
println!("{}", first_word); |
|||
println!("{}", re_firstw); |
|||
println!("{}", sec_word); |
|||
println!("{}", word_value); |
|||
s.clear(); |
|||
} |
|||
|
|||
fn first_word(s: &String) -> usize { |
|||
let bytes = s.as_bytes(); |
|||
for (i, &item) in bytes.iter().enumerate() { |
|||
if item == b' ' { |
|||
return i; |
|||
} |
|||
} |
|||
s.len() |
|||
} |
|||
|
|||
fn get_first_word(s: &String) -> &str { |
|||
let bytes = s.as_bytes(); |
|||
for (i, &item) in bytes.iter().enumerate() { |
|||
if item == b' ' { |
|||
return &s[..i]; |
|||
} |
|||
} |
|||
return s; |
|||
} |
|||
|
|||
fn re_first_word(s: &String) -> &str { |
|||
let bytes = s.as_bytes(); |
|||
for (i, &item) in bytes.iter().enumerate() { |
|||
if item == b' ' { |
|||
return &s[..i]; |
|||
} |
|||
} |
|||
&s[..] |
|||
} |
|||
|
|||
fn second_word(s: &String) -> &str { |
|||
let bytes = s.as_bytes(); |
|||
let mut begin: usize = 0; |
|||
for (i, &item) in bytes.iter().enumerate() { |
|||
if item == b' ' || item == s[s.len() - 1..].as_bytes()[0] { |
|||
if begin == 0 { |
|||
begin = i + 1; |
|||
continue; |
|||
} else { |
|||
let end = if item == b' ' { i } else { i + 1 }; |
|||
return &s[begin..end]; |
|||
} |
|||
} |
|||
} |
|||
&s[..] |
|||
} |
|||
|
|||
fn slice_first(s: &str) -> &str { |
|||
let bytes = s.as_bytes(); |
|||
for (i, &item) in bytes.iter().enumerate() { |
|||
if item == b' ' { |
|||
return &s[..i]; |
|||
} |
|||
} |
|||
&s[..] |
|||
} |
Loading…
Reference in new issue