可以将字符串转换为数组?

时间:2011-02-02 02:38:14

标签: ruby arrays string

# (this give me list eg : ,s, s, m ...
list = list + "," + name

我想使用拆分然后加入...尝试使用以下..我不知道我在做什么

list = list.split(',') + name + collect{|c| c.name}.to_sentence 
list = list.split(',') + name + collect{|c| c.name}.Join(",")

任何想法??

7 个答案:

答案 0 :(得分:40)

我注意到这个页面出现了"字符串到char数组ruby的通用谷歌搜索"。

如果你只想在ruby中将字符串转换为char数组,

"string".chars
# ["s", "t", "r", "i", "n", "g"]

答案 1 :(得分:18)

我不明白你的问题,但如果你想将字符串转换为数组

>> "a string".split("")
=> ["a", " ", "s", "t", "r", "i", "n", "g"]

答案 2 :(得分:4)

str = "a,b,c"
list = str.split(/,/) # => ["a", "b", "c"]
list.join("-") # => "a-b-c"

从您的评论中,您似乎还希望将一个字符串(或多个字符串)附加到列表中,然后再加入另一个字符串。也许是这样的:

(str.split(/,/) << 'd').join(',') # => "a,b,c,d"
list2 = ['d', 'e', 'f']
(str.split(/,/) << list2).join(',') # => "a,b,c,d,e,f"

Ruby语法还允许使用“点”表示法调用运算符,因此这可能会澄清情况:

str.split(/,/).<<('d').join(',') # => "a,b,c,d"
str.split(/,/).<<(list2).join(',') # => "a,b,c,d,e,f"

答案 3 :(得分:1)

str = "a,b,c"
 => "a,b,c" 

array = str.split(/,/)
 => ["a", "b", "c"] 

# add more elements to the str:

str << ',x,y,z'
 => "a,b,c,x,y,z" 

array2 =  str.split(/,/)
 => ["a", "b", "c", "x", "y", "z"] 

但你可能想要这样的东西(处理输入字符串并将它们组装在一个数组中):

array = []
str = "a,b,c"
array << str.split(/,/)
  => [["a", "b", "c"]] 

str = 'x,y,z'
array << str.split(/,/)
 => [["a", "b", "c"], ["x", "y", "z"]] 

array.flatten!
 => ["a", "b", "c", "x", "y", "z"] 

答案 4 :(得分:0)

如果您尝试将“list”作为名称集合的字符串表示形式,并且您希望为其添加名称(也是字符串),则通过(例如)逗号分隔其余部分,并且结果是一个字符串,你只需要字符串连接:

list + ',' + name

至少对我来说,更好的方法是字符串插值:

"#{list},#{name}"

这使您可以更清楚地操作数据来格式化它。

但是,如果您希望通过逗号分割将“list”转换为数组并将name变量添加到结尾,则答案基本相同,String#split和数组连接:< / p>

list.split(',') + name

希望这两个中的一个是你问题的解决方案!

答案 5 :(得分:0)

我认为最大的问题是你正在尝试使用字符串,当你应该真正使用数组时。第二个问题是你将逗号分隔的字符串与数组或列表混淆。

在Ruby中,列表和数组是不同于字符串的对象。字符串适用于存储文本,有时还存储二进制数据。

数组适用于存储数据序列,您需要能够通过数字索引访问它们。队列和堆栈通常写在数组之上,因为数组可以很容易地从开头或结尾添加和删除元素。

出于您的目的,我建议使用Array对象,然后在需要字符串表示时使用join(',')数组。

ary = []        #=> []
ary << 'item 1' #=> ["item 1"]
ary << 'item 2' #=> ["item 1", "item 2"]
ary.join(',')   #=> "item 1,item 2"

答案 6 :(得分:0)

不要忘记scan

在我的情况下,我有一个真实的朋友代码,一个“大”整数(8位数字),为了提高可读性,我想每2位破折号:

friend_code.scan(/../).join("-")

您的解决方案将是

friend_code.scan(/./).join(",")