Split a character string based on change of character: Difference between revisions
Split a character string based on change of character (view source)
Revision as of 04:26, 15 February 2017
, 7 years agoAdd Common Lisp implementation
(→{{header|Fortran}}: Aha!) |
(Add Common Lisp implementation) |
||
Line 208:
NEXT
= split$</lang>
{{out}}
<pre>g, HHH, 5, YY, ++, ///, \</pre>
=={{header|Common Lisp}}==
<lang lisp>(defun split (string)
(flet ((make-buffer ()
(make-array 0 :element-type 'character :adjustable t :fill-pointer t)))
(loop with buffer = (make-buffer)
with result
for prev = nil then c
for c across string
when (and prev (char/= c prev))
do (push buffer result)
(setf buffer (make-buffer))
do (vector-push-extend c buffer)
finally (push buffer result)
(return (format t "~{~A~^, ~}"(nreverse result))))))
(split "gHHH5YY++///\\")</lang>
{{out}}
<pre>g, HHH, 5, YY, ++, ///, \</pre>
|