RosettaCodeData/Task/Reverse-a-string/Groovy/reverse-a-string-2.groovy

16 lines
493 B
Groovy

def string = "as⃝df̅"
List combiningBlocks = [
Character.UnicodeBlock.COMBINING_DIACRITICAL_MARKS,
Character.UnicodeBlock.COMBINING_DIACRITICAL_MARKS_SUPPLEMENT,
Character.UnicodeBlock.COMBINING_HALF_MARKS,
Character.UnicodeBlock.COMBINING_MARKS_FOR_SYMBOLS
]
List chars = string as List
chars[1..-1].eachWithIndex { ch, i ->
if (Character.UnicodeBlock.of((char)ch) in combiningBlocks) {
chars[i..(i+1)] = chars[(i+1)..i]
}
}
println chars.reverse().join()