Jump to content

Multisplit: Difference between revisions

Cleaned up D version
(Cleaned up D version)
Line 8:
 
=={{header|D}}==
<lang d>import std.stdio, std.array, std.algorithm, std.string;
void main()
{
auto s = `a!===b=!=c==!=d`;
auto divs = [ `==`, `!=`, `=`, `!` ];
auto lst = MultiSplit(s, divs);
foreach(int i, string p; lst) {
write(p);
if (i < lst.length-1) write(` <`~ divs[i] ~`> `);
}
 
string[] MultiSplitmultiSplit(in string s, string[] divisors) {
if (s.empty)
{
if (s.empty) return [];
string[] resresult;
char[]auto rest = s.dupidup;
 
foreach(string (div; divisors) {
auto p = findSplit(rest, div);
resresult.length += res.length + 1;
resresult[$ - 1] = p[0].idup;
rest = p[2];
if (p[1].empty || rest.empty) // divisor is not found OR it was last in string
if (p[1].empty || rest.empty)
break;
}
 
if (!rest.empty) {
resresult.length += res.length + 1;
resresult[$ - 1] = rest.idup;
}
 
return result;
 
void main() {
auto s = `"a!===b=!=c==!=d`";
auto divs = [ `"==`", `"!=`", `"=`", `"!` "];
auto lst = MultiSplitmultiSplit(s, divs);
 
foreach (int i, string p; lst) {
write(p);
if (i < lst.length-1)
if (i < lst.length-1) write(`" <`~{", divs[i], ~`>"} `");
}
return reswriteln();
}</lang>
Output (separators are in angle brackets):
<pre>a! <{==>} =b= <{!=>} c <{=>} = <{!>} =d</pre>
 
=={{header|F_Sharp|F#}}==
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.