Comment on page
Splitting a string
- By separator -
s.split("separator")
- By whitespace -
s.split_whitespace()
- By newlines -
s.lines()
Standard library
split
can be used with a closure to fulfill this use case.fn split_stuff() {
let message = "Hello there | how are you ; doing?";
for s in message.split(|c| (c == '|') || (c == ';')) {
dbg!(s);
}
}
Output would be as follows,
s = "Hello there " s = " how are you " s = " doing?"
Although it is possible to write a closure to split on arbitrarily complex conditions, it easier to use
regex
crate for splitting based on regular expressions.Another approach without using a closure would be to make use of string slice patterns. As an example, we can write the above split as,
for s in message.split(&['|', ';'][..]) {
// ...
}
Splits can be collected to a vector and other types of Rust collections with
collect
method.Splitting a string such as
"hello there; how| are|you, chathura"
based on multiple characters and taking into account multiple spaces is not simple without using regular expressions.Following solution demonstrates the use of regex crate to accomplish the task.
fn split_by_regex() {
let message = "hello there; how| are|you, Chathura";
let re = regex::Regex::new(r"[;,|\s]\s*").unwrap();
for s in re.split(message) {
dbg!(s);
}
}
Last modified 3yr ago