Text between: Difference between revisions

Content added Content deleted
(Remove redundant copy of Sidef example)
(Add Rust implementation)
Line 2,281: Line 2,281:
puts returnText
puts returnText
</lang>
</lang>
=={{header|Rust}}==
<lang Rust>
//Use Into<String> so input can be String, &str or anything else that implements Into<String>
fn text_between<S: Into<String>>(input: S, start: S, end: S) -> String {
//Convert to strings
let search_str = input.into();
let start_str = start.into();
let end_str = end.into();


let start_idx = if start_str.as_str() == "start" {
0
} else {
let start_point = search_str.find(start_str.as_str());
if start_point.is_none() {
return String::from("");
}
start_point.unwrap() + start_str.len()
};
let remaining = &search_str[start_idx..];

let end_idx = if end_str.as_str() == "end" {
remaining.len()
} else {
remaining.find(end_str.as_str()).unwrap_or(remaining.len())
};

return remaining[..end_idx].to_string()
}

fn main() {
println!("'{}'", text_between("Hello Rosetta Code world", "Hello ", " world"));
println!("'{}'", text_between("Hello Rosetta Code world", "start", " world"));
println!("'{}'", text_between("Hello Rosetta Code world", "Hello", "end"));
println!("'{}'", text_between("</div><div style=\"chinese\">你好嗎</div>", "<div style=\"chinese\">", "</div>"));
println!("'{}'", text_between("<text>Hello <span>Rosetta Code</span> world</text><table style=\"myTable\">", "<text>", "<table>"));
println!("'{}'", text_between("<table style=\"myTable\"><tr><td>hello world</td></tr></table>", "<table>", "</table>"));
println!("'{}'", text_between("The quick brown fox jumps over the lazy other fox", "quick ", " fox"));
println!("'{}'", text_between("One fish two fish red fish blue fish", "fish ", " red"));
println!("'{}'", text_between("FooBarBazFooBuxQuux", "Foo", "Foo"));
}
</lang>
{{out}}
<pre>
'Rosetta Code'
'Hello Rosetta Code'
' Rosetta Code world'
'你好嗎'
'Hello <span>Rosetta Code</span> world</text><table style="myTable">'
''
'brown'
'two fish'
'BarBaz'
</pre>
=={{header|Scala}}==
=={{header|Scala}}==
<lang Scala>object TextBetween extends App {
<lang Scala>object TextBetween extends App {