首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用%w或%W - Ruby的变量

使用%w或%W - Ruby的变量
EN

Stack Overflow用户
提问于 2017-01-29 18:16:43
回答 1查看 1K关注 0票数 4

我有一个类似的问题,这篇文章:How to use variable inside %w{},但我的问题有点不同。我希望接受一个字符串变量,并使用%W或%w将其转换为数组。

代码语言:javascript
复制
text = gets.chomp   # get user text string

#例如,我输入“先到先出”

代码语言:javascript
复制
words = %w[#{text}]  # convert text into array of strings

puts words.length
puts words

控制台输出

代码语言:javascript
复制
1
first in first out

将文本保持为字符串块,不将其拆分为数组单词"first“、"in”、"first“、"out”

代码语言:javascript
复制
words = text.split (" ")   # This works fine

words = %w[#{gets.chomp}]  # This doesn't work either
words = %w['#{gets.chomp}'] # This doesn't work either
words = %W["#{gets.chomp}"] # This doesn't work either
words = %w("#{gets.chomp}") # This doesn't work either
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-29 18:21:10

%w并不打算进行任何拆分,它是表示源中的以下字符串应该被拆分的一种方式。从本质上说,这只是一个简短的符号。

%W的情况下,#{...}块被视为单个令牌,其中包含的任何空格都被认为是一个完整的部分。

正确的做法是:

代码语言:javascript
复制
words = text.trim.split(/\s+/)

做像%W[#{...}]这样的事情和"#{...}"一样毫无意义。如果需要将某些内容转换为字符串,请调用.to_s。如果你需要什么拆分电话,打电话给split

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41924301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档