siv*_*udh 3 ruby parsing keyword
我们可以轻松地将关键字转换为字符串:
true.to_s
=> "true"
Run Code Online (Sandbox Code Playgroud)
但是如何将字符串转换为关键字?
你有多少个关键词?您对"关键字"的定义是什么?
我会用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)