Skip to content

End of Life Ruby 3.0 has reached end of life and gets no more fixes. Switch to Ruby 4.0 →

instance method

String#each_grapheme_cluster

str.each_grapheme_cluster {|cstr| block } → str
str.each_grapheme_cluster → an_enumerator

Passes each grapheme cluster in str to the given block, or returns an enumerator if no block is given. Unlike String#each_char, this enumerates by grapheme clusters defined by Unicode Standard Annex #29 unicode.org/reports/tr29/

Example
"a\u0300".each_char.to_a.size #=> 2
"a\u0300".each_grapheme_cluster.to_a.size #=> 1

Ruby version changes

  1. 3.0
See also #each_codepoint #each_line #each_char #empty? also in 4.1 · 4.0 · 3.4 · 3.3 · 3.2 · 3.1