split_repchar_string.sf 370 B

123456789101112131415161718
  1. #!/usr/bin/ruby
  2. #
  3. ## https://rosettacode.org/wiki/Split_a_character_string_based_on_change_of_character
  4. #
  5. func group(str) {
  6. gather {
  7. while (var match = (str =~ /((.)\g{-1}*)/g)) {
  8. take(match[0])
  9. }
  10. }
  11. }
  12. say group(ARGV[0] \\ 'gHHH5YY++///\\').join(', ')
  13. assert_eq(group('gHHH5YY++///\\'), ["g", "HHH", "5", "YY", "++", "///", "\\"])