具有各种字符的符号

Symbols with various characters

我想将如下字符串转换为符号:

他们有 '&''/'.

这样的字符

我怎样才能做到这一点?

'Architects & Engineers'.to_sym == :'Architects & Engineers'
#⇒ true

['Architects & Engineers'.to_sym, :'Architects & Engineers'].map(&:to_s)
#⇒ ["Architects & Engineers", "Architects & Engineers"]

您可以使用 classy_enum gem https://github.com/AgilionApps/classy_enum

class YourEnum < ClassyEnum::Base
end

class YourEnum::ArchitectAndEngineer < YourEnum
  def to_s
    "Architects & Engineers"
  end
end

class YourEnum::DocterOrEngineer < YourEnum
  def to_s
    "Doctor/Engineer"
  end
end

那你就可以像

一样使用它
YourEnum.map(&:to_s) # ["Architects & Engineers", "Doctor/Engineer"]

你可以找到这样的枚举

YourEnum.find("Architects & Engineers") #<YourEnum::ArchitectAndEngineer:0x007f96ccb16628>

另一种方式:

:"Architects & Engineers"     # => :"Architects & Engineers"
:"Architects & Engineers" == "Architects & Engineers".to_sym # => true