因此,我正在尝试将字符串\t\n
更改为字符串中所有单词字符的数组。我想要的数组如下所示:["t","n"]
。
到目前为止,我已经尝试过:
input = " \t\n"
array = input.scan(/\w/)
我已经在rubular上的这个字符串上尝试过此正则表达式,并且它与我希望的所有单词字符都匹配。
但是,当使用input.scan(/\w)
时,将返回一个空数组。
请原谅我的无知,因为我仍然很陌生,但这为什么呢?
答案 0 :(得分:0)
我不熟悉ruby,但是您似乎对字符串插值感到困惑。
每https://www.ruby-forum.com/t/new-line-in-string/176797
input = " \t\n"
为您提供一个包含空格,制表符和换行符的字符串。
您可能想使用单引号从字面上获取您编写的字符串:
input = ' \t\n'
如果您非常想保留双引号,那么我相信这会起作用:
input = " \\t\\n"
您应该阅读https://blog.appsignal.com/2016/12/21/ruby-magic-escaping-in-ruby.html,以了解有关Ruby中字符串内插的更多信息。我会将您链接到官方文档,但是我缺乏红宝石经验会导致缺乏官方文档经验。
答案 1 :(得分:0)
因此,就像同事在注释中解释的那样,您在"\t\n"
字符串中包含的字母不是普通字母,只是一个称为special characters
的字母,因此我不确定,但采用这种字符并不容易来自此字符串的原因是\t
就像一个字符。
使用像tn
这样的普通字符串,您可以执行以下操作
"tn".split("")
并为您提供所需的数组。
但是对于特殊字符,如示例中所示。你可以做这样的事情
a = "\t\n".split("")
a.map! do |e|
if e == "\t"
"t"
elsif e == "\n"
"n"
end
end
我相信,这会为您提供所需的结果。
答案 2 :(得分:0)
您在这里!你真的很亲密。
input = " \t\n"
array = input.dump.scan(/\w/)
=> ["t", "n"]
关键是使用String#dump
(请参阅:https://ruby-doc.org/core-2.6.5/String.html#method-i-dump)