Skip to content

Maintenance Ruby 3.4 gets fixes, but no new features. Switch to Ruby 4.0 →

instance method

Symbol#casecmp

(untyped object) -> (-1 | 0 | 1)?
casecmp(object) → -1, 0, 1, or nil

Like Symbol#<=>, but case-insensitive; equivalent to self.to_s.casecmp(object.to_s):

Example
lower = :abc
upper = :ABC
upper.casecmp(lower) # => 0
lower.casecmp(lower) # => 0
lower.casecmp(upper) # => 0

Returns nil if self and object have incompatible encodings, or if object is not a symbol:

Example
sym = 'äöü'.encode("ISO-8859-1").to_sym
other_sym = 'ÄÖÜ'
sym.casecmp(other_sym) # => nil
:foo.casecmp(2)        # => nil

Unlike Symbol#casecmp?, case-insensitivity does not work for characters outside of ‘A’..‘Z’ and ‘a’..‘z’:

Example
lower = :äöü
upper = :ÄÖÜ
upper.casecmp(lower) # => -1
lower.casecmp(lower) # => 0
lower.casecmp(upper) # => 1

Related: Symbol#casecmp?, String#casecmp.

See also #casecmp? #capitalize #as_json #downcase also in 4.1 · 4.0 · 3.3 · 3.2 · 3.1 · 3.0