Split a character string based on change of character: Difference between revisions

Add Refal
(Add Refal)
 
(4 intermediate revisions by 4 users not shown)
Line 1,199:
g, HHH, 5, YY, ++, ///, \
</pre>
 
=={{header|ed}}==
 
<syntaxhighlight lang="sed">
# by Artyom Bologov
H
# Repeating two times because matching is greedy
g/.*/s/((.)\2*)((.)\4*)/\1\
\3/g
g/.*/s/((.)\2*)((.)\4*)/\1\
\3/g
,p
Q
</syntaxhighlight>
 
{{out}}
 
<pre>$ cat split-on-change.ed | ed -lEGs split-on-change.input
Newline appended
g
HHH
5
YY
++
///
\
</pre>
 
=={{header|Elixir}}==
Line 2,439 ⟶ 2,466:
* {MAN, ZERO WIDTH JOINER, WOMAN, ZERO WIDTH JOINER, GIRL, ZERO WIDTH JOINER, BOY} x 1
 
=={{header|Refal}}==
<syntaxhighlight lang="refal">$ENTRY Go {
= <Prout <Join (', ') <Split 'gHHH5YY++///\\'>>>;
};
 
Split {
(e.Cur) = (e.Cur);
(e.Cur s.1) s.1 e.X = <Split (e.Cur s.1 s.1) e.X>;
(e.Cur) s.1 e.X = (e.Cur) <Split (s.1) e.X>;
s.1 e.X = <Split (s.1) e.X>;
};
 
Join {
(e.Joiner) = ;
(e.Joiner) (e.Str) = e.Str;
(e.Joiner) (e.Str) e.Strs = e.Str e.Joiner <Join (e.Joiner) e.Strs>;
};</syntaxhighlight>
{{out}}
<pre>g, HHH, 5, YY, ++, ///, \</pre>
=={{header|REXX}}==
===version 1===
Line 2,638 ⟶ 2,684:
g, HHH, 5, YY, ++, ///, \
 
=={{header|SETL}}==
<syntaxhighlight lang="setl">program split_a_character_string_based_on_change_of_character;
s := "gHHH5YY++///\\";
print(join_strings(", ", split_on_change(s)));
 
proc split_on_change(s);
parts := [];
loop while s /= "" do
parts with:= span(s, s(1));
end loop;
return parts;
end proc;
 
proc join_strings(s, parts);
if parts=[] then return ""; end if;
return parts(1) +/ [s + part : part in parts(2..)];
end proc;
end program;</syntaxhighlight>
{{out}}
<pre>g, HHH, 5, YY, ++, ///, \</pre>
=={{header|Sidef}}==
<syntaxhighlight lang="ruby">func group(str) {
Line 2,823 ⟶ 2,889:
Second variant:
++, ///, 5, HHH, YY, \, g
</pre>
 
=={{header|Uiua}}==
{{works with|Uiua|0.11.1}}
<syntaxhighlight lang="uiua">
&p/$"_, _"⊜□+1⊸⊛ "gHHH5YY++///\\"
</syntaxhighlight>
{{out}}
<pre>
g, HHH, 5, YY, ++, ///, \
</pre>
 
Line 2,891 ⟶ 2,967:
 
=={{header|Wren}}==
<syntaxhighlight lang="ecmascriptwren">var split = Fn.new { |s|
if (s.count == 0) return ""
var res = []
2,126

edits