Skip to content
instance method

String#each_grapheme_cluster

() -> ::Enumerator[::String, self]
() { (::String grapheme_cluter) -> void } -> self
each_grapheme_cluster {|grapheme_cluster| ... } → self
each_grapheme_cluster → enumerator

With a block given, calls the given block with each successive grapheme cluster from self (see Unicode Grapheme Cluster Boundaries); returns self:

Example
a = []
'hello'.each_grapheme_cluster do |grapheme_cluster|
  a.push(grapheme_cluster)
end
a  # => ["h", "e", "l", "l", "o"]

a = []
'тест'.each_grapheme_cluster do |grapheme_cluster|
  a.push(grapheme_cluster)
end
a # => ["т", "е", "с", "т"]

a = []
'こんにちは'.each_grapheme_cluster do |grapheme_cluster|
  a.push(grapheme_cluster)
end
a # => ["こ", "ん", "に", "ち", "は"]

With no block given, returns an enumerator.

Related: see Iterating.

Ruby version changes

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