using System.Collections.Generic;
using System.Globalization;
public static void Main()
var s = "Les Mise\u0301rables";
var r = s.ReverseGraphemeClusters();
public static class StringEx
private static IEnumerable<string> GraphemeClusters(this string s) {
var enumerator = StringInfo.GetTextElementEnumerator(s);
while(enumerator.MoveNext()) {
yield return (string)enumerator.Current;
public static string ReverseGraphemeClusters(this string s) {
return string.Join("", s.GraphemeClusters().Reverse().ToArray());