Multisplit: Difference between revisions

(Added Kotlin)
Line 1,039:
<p>
Perl 6 automatically returns Match objects that will stringify to the matched pattern, but can also be interrogated for their match positions, as illustrated above by post-processing the results two different ways.
 
=={{header|Phix}}==
<lang Phix>procedure multisplit(string text, sequence delims)
integer k = 1, kdx
while 1 do
integer kmin = 0
for i=1 to length(delims) do
integer ki = match(delims[i],text,k)
if ki!=0 then
if kmin=0 or ki<kmin then
kmin = ki
kdx = i
end if
end if
end for
string token = text[k..kmin-1]
if kmin=0 then
printf(1,"Token: [%s] at %d\n",{token,k})
exit
end if
printf(1,"Token: [%s] at %d, delimiter (%s) at %d\n",{token,k,delims[kdx],kmin})
k = kmin+length(delims[kdx])
end while
end procedure
 
multisplit("a!===b=!=c",{"==","!=","="})</lang>
{{out}}
<pre>
Token: [a] at 1, delimiter (!=) at 2
Token: [] at 4, delimiter (==) at 4
Token: [b] at 6, delimiter (=) at 7
Token: [] at 8, delimiter (!=) at 8
Token: [c] at 10
</pre>
 
=={{header|PicoLisp}}==
Line 1,063 ⟶ 1,097:
<pre>("a" (1 "!=") NIL (3 "==") "b" (6 "=") NIL (7 "!=") "c")
("a" (1 "!=") NIL (3 "=") NIL (4 "=") "b" (6 "=") NIL (7 "!=") "c")</pre>
 
=={{header|Pike}}==
<lang Pike>string input = "a!===b=!=c";
7,795

edits