将Ruby字符串转换为符号

20

我想制作一个视图辅助函数,它具有大小参数(例如func(size))。问题在于,这个大小必须在函数中用作符号。例如,如果我将'medium'传递给func,我需要将其转换为:medium

我该如何做到这一点?


1
你是在问如何将字符串转换为符号吗? - Frederick Cheung
是的,我的错,我是 Ruby 新手。 - Killerpixler
3个回答

41

有几种方法可以做到这一点:

如果您的字符串没有空格,您可以简单地这样做:

"medium".to_sym => :medium

如果您的字符串有空格,您应该这样做:

"medium thing".gsub(/\s+/,"_").downcase.to_sym => :medium_thing

或者如果您正在使用Rails:

"medium thing".parameterize.underscore.to_sym => :medium_thing

参考文献:在Ruby中将字符串转换为符号型能力


3
从技术上讲,您不需要将空格转换为任何东西。 - Dave Newton
从技术上讲,是的,但你会得到:“像这样的符号”(1.9.3) - Toby L Welch-Richards
4
请注意,在Ruby 2.2之前,符号不会被垃圾回收。因此,如果您在动态字符串上使用to_sym方法,您的应用程序将耗尽内存。 - secador de pelo

4
您可以使用以下方式将字符串转换为符号:
string = "something"
symbol = :"#{string}"

3
或者只需使用 string.to_sym - A Fader Darkly

1

或者只是

a = :'string'
# => :string

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接