Chr*_*her 226 ruby ruby-on-rails
符号通常表示为这样
:book_author_title
Run Code Online (Sandbox Code Playgroud)
但如果我有一个字符串:
"Book Author Title"
Run Code Online (Sandbox Code Playgroud)
在rails/ruby中是否有内置的方式将其转换为符号,我可以使用: 符号而不仅仅执行原始字符串正则表达式替换?
Pri*_*iit 340
Rails得到ActiveSupport::CoreExtensions::String::Inflections了提供这种方法的模块.他们都值得一看.对于你的例子:
'Book Author Title'.parameterize.underscore.to_sym # :book_author_title
Run Code Online (Sandbox Code Playgroud)
zze*_*roo 223
来自:http://ruby-doc.org/core/classes/String.html#M000809
str.intern => symbol
str.to_sym => symbol
Run Code Online (Sandbox Code Playgroud)
返回对应str的符号,如果以前不存在则创建符号.见Symbol#id2name.
"Koala".intern #=> :Koala
s = 'cat'.to_sym #=> :cat
s == :cat #=> true
s = '@cat'.to_sym #=> :@cat
s == :@cat #=> true
Run Code Online (Sandbox Code Playgroud)
这也可用于创建无法使用:xxx表示法表示的符号.
'cat and dog'.to_sym #=> :"cat and dog"
Run Code Online (Sandbox Code Playgroud)
但是对于你的例子......
"Book Author Title".gsub(/\s+/, "_").downcase.to_sym
Run Code Online (Sandbox Code Playgroud)
应该去 ;)
小智 23
"Book Author Title".parameterize('_').to_sym
=> :book_author_title
Run Code Online (Sandbox Code Playgroud)
http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-parameterize
parameterize是一个rails方法,它允许您选择分隔符的内容.默认情况下它是短划线" - ".
Jul*_*ins 14
intern→symbol返回与str对应的Symbol,如果以前不存在则创建该符号
"edition".intern # :edition
Run Code Online (Sandbox Code Playgroud)
http://ruby-doc.org/core-2.1.0/String.html#method-i-intern
Cha*_*tni 11
在Rails中,您可以使用以下underscore方法执行此操作:
"Book Author Title".delete(' ').underscore.to_sym
=> :book_author_title
Run Code Online (Sandbox Code Playgroud)
更简单的代码使用正则表达式(与Ruby一起使用):
"Book Author Title".downcase.gsub(/\s+/, "_").to_sym
=> :book_author_title
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
166726 次 |
| 最近记录: |