【发布时间】:2019-10-31 03:13:01
【问题描述】:
例如,:"foo" 与 :foo。
更具体地说,如果我有一个像"Clarinet (B♭)" 这样的字符串,并且我在上面调用.to_sym,我会得到一个带引号的符号,带有转义字符::"Clarinet (B\342\231\255)"。在这种情况下,我想使用它的字符串版本而不是符号版本作为哈希键。更一般地说,如果我得到 any 引用符号,我想根本不使用该符号而只使用原始字符串。
例如
ahash = {}
s = "Clarinet (B♭)"
sym = s.to_sym
if some_test_for_quoted_symbols
ahash[sym] = "foo"
else
ahash[s] = "foo"
end
有谁知道我如何区分带引号或不带引号的符号?谢谢
PS 请不要告诉我我不应该使用这么旧的 Ruby 版本。谢谢!
【问题讨论】:
-
那为什么不总是使用字符串呢?
-
:foo和:"foo"是相同的。如果您想区分需要转义的字符,这是一回事,但您将无法区分:foo和:"foo"。 -
好吧,
if sym.inspect[1] == '"'显然可以,但你一开始就不应该这样做。 -
@SergioTulentsev 为什么这是误报?
-
这个问题对我来说是“AB 问题!”。 ruby 中没有“引用符号”这样的东西。它纯粹是在终端中清楚地显示值的一种方式;类似于
\n代替不可见空白的显示方式。 为什么您要检查符号是否包含空格?你真正想解决什么问题?