字符串转换为符号能够在Ruby中
符号通常表示为这样字符串转换为符号能够在Ruby中
:book_author_title
,但如果我有一个字符串:
"Book Author Title"
有一个内置的方式在轨/红宝石转换它变成一个符号,我可以使用:
表示法,而不只是做一个原始字符串正则表达式替换?
的Rails得到ActiveSupport::CoreExtensions::String::Inflections
模块,提供了这样的方法。他们都值得关注。对于你的例子:
'Book Author Title'.parameterize.underscore.to_sym # :book_author_title
在Rails中,你可以做到这一点使用underscore
方法:
"Book Author Title".delete(' ').underscore.to_sym
=> :book_author_title
的简单代码使用正则表达式(用Ruby作品):
"Book Author Title".downcase.gsub(/\s+/, "_").to_sym
=> :book_author_title
只有当所有单词都以大写字母开头时,才会起作用,如果它是“我的胖狗”,它将返回:myfat_dog。 – TheLegend 2012-04-18 13:57:51
来自:http://ruby-doc.org/core/classes/String.html#M000809
str.intern => symbol
str.to_sym => symbol
返回与str
对应的符号,如果没有公式,则创建该符号显然存在。见Symbol#id2name
。
"Koala".intern #=> :Koala
s = 'cat'.to_sym #=> :cat
s == :cat #=> true
s = '@cat'.to_sym #=> :@cat
s == :@cat #=> true
这也可以被用于创建可以不使用:xxx
符号来表示符号。
'cat and dog'.to_sym #=> :"cat and dog"
但对于你的榜样......
"Book Author Title".gsub(/\s+/, "_").downcase.to_sym
应该去;)
辉煌的例子。谢谢。 – Paul 2012-10-05 09:51:07
原来的海报可能对Rails的答案感到满意,但这篇文章回答了实际提出的问题。 – 2013-09-24 21:01:43
“['to_sym']”也可以用于创建无法用“xxx符号”表示的符号。 ':'猫和狗'与'猫和狗'.to_sym'相同。 – anthropomorphic 2013-12-09 09:38:56
"Book Author Title".parameterize('_').to_sym
=> :book_author_title
http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-parameterize
参数化是一个轨道的方法,它可以让你选择你想要的分隔符是什么。默认情况下它是“ - ”。
感谢参数化与选项帮助:) – Francois 2013-05-21 11:23:35
这是你在找什么?:
:"Book Author Title"
:)
实习生→符号 返回与str中的符号,创造了符号,如果它以前不存在
"edition".intern # :edition
像这一个,因为我的string.to_sym解决方案给我一个安全警告:) – 2015-06-24 11:47:34
而不是转换,哟你可能对[无关的访问 - 同时为字符串和符号参数工作的方法]感兴趣(http://stackoverflow.com/questions/10780817)。 – 2013-06-12 04:07:16