将字符串转换为关键字

siv*_*udh 3 ruby parsing keyword

我们可以轻松地将关键字转换为字符串:

true.to_s
=> "true"
Run Code Online (Sandbox Code Playgroud)

但是如何将字符串转换为关键字?

knu*_*nut 6

你有多少个关键词?您对"关键字"的定义是什么?

我会用case-command实现.您可以to_keyword为String 定义方法.我的实现检测到true,false,nil(或NULL).检测到字符串,忽略大写(TRUE也将是true)其他字符串将返回一个符号(字符串本身将是另一个合理的结果).

该示例可以适用于其他"关键字"或其他结果.

class String
  #Return 'keyword'
  #Detects:
  #- true (independend of lower letters/capitals)
  #- false (independend of lower letters/capitals)
  #- nil/NULL (independend of lower letters/capitals)
  def to_keyword
    case self
      when /\Atrue\Z/i; true
      when /\Afalse\Z/i; false
      when /\Anil\Z/i, /\ANULL\Z/; nil
      else; self.to_sym #return symbol. Other posibility: self.
    end
  end
end


p 'true'.to_keyword #true
p 'TRUE'.to_keyword #true
p 'false'.to_keyword #false
p 'NULL'.to_keyword #nil  (NULL is used in DB like nil)
p 'NULLc'.to_keyword #:NULLc  not detected -> symbol
Run Code Online (Sandbox Code Playgroud)