我有一个带有字符串值的变量。说:
str = "hello, world"
如何将其转换为原始字符串中各个字符的数组?上述示例的预期结果为:
['h', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd']
zphenhs41#
我注意到,这个页面出现的通用谷歌搜索“字符串到字符数组ruby”。如果你只想用ruby把字符串转换成字符数组,
"string".chars # ["s", "t", "r", "i", "n", "g"]
xjreopfe2#
我不明白你的问题但是如果你想把字符串转换成数组
>> "a string".split("") => ["a", " ", "s", "t", "r", "i", "n", "g"]
z2acfund3#
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"
o4tp2gmn4#
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"]
t5zmwmid5#
如果你试图让你的“list”成为一个名字集合的字符串表示,并且你想向其中添加一个名字(也是一个字符串),用(例如)逗号将其与其余的名字分隔开,并使结果成为一个字符串,那么你所需要的就是字符串连接:
list + ',' + name
至少对我来说,一个更好的方法是字符串插值:
"#{list},#{name}"
这使您更清楚地了解到您正在操作数据以对其进行格式化。然而,如果你想把“list”转换成一个数组,用逗号分隔它,并在末尾添加name变量,答案基本上是一样的,用String#split和数组连接:
String#split
list.split(',') + name
希望这两个中的一个是你问题的解决方案!
5kgi1eie6#
我认为最大的问题是你试图使用一个字符串,而实际上你应该使用一个数组。第二个问题是你混淆了逗号分隔的字符串和数组或列表。在Ruby中,列表和数组与字符串是不同的对象。字符串很适合存储文本,有时也适合存储二进制数据。数组很适合存储数据序列,在这种情况下,你需要能够通过数字索引来访问它们。队列和堆栈通常写在数组的顶部,因为数组可以很容易地从开始或结束处添加和删除元素。出于您的目的,我建议使用Array对象,然后在需要字符串表示时使用join(',')数组。
join(',')
ary = [] #=> [] ary << 'item 1' #=> ["item 1"] ary << 'item 2' #=> ["item 1", "item 2"] ary.join(',') #=> "item 1,item 2"
tmb3ates7#
别忘了scan在我的例子中,我有一个真正的朋友代码,一个“大”整数(8位),为了更好的可读性,我想把破折号每2位:
scan
friend_code.scan(/../).join("-")
您的解决方案应该是
friend_code.scan(/./).join(",")
7条答案
按热度按时间zphenhs41#
我注意到,这个页面出现的通用谷歌搜索“字符串到字符数组ruby”。
如果你只想用ruby把字符串转换成字符数组,
xjreopfe2#
我不明白你的问题但是如果你想把字符串转换成数组
z2acfund3#
从您的注解中可以看出,您似乎还想将一个字符串(或多个字符串)追加到列表中,然后再加入到另一个字符串中。
Ruby语法还允许使用“点”符号调用运算符,因此下面这段话可以澄清这种情况:
o4tp2gmn4#
但是您可能需要类似这样的代码(处理输入字符串并将它们组装到数组中):
t5zmwmid5#
如果你试图让你的“list”成为一个名字集合的字符串表示,并且你想向其中添加一个名字(也是一个字符串),用(例如)逗号将其与其余的名字分隔开,并使结果成为一个字符串,那么你所需要的就是字符串连接:
至少对我来说,一个更好的方法是字符串插值:
这使您更清楚地了解到您正在操作数据以对其进行格式化。
然而,如果你想把“list”转换成一个数组,用逗号分隔它,并在末尾添加name变量,答案基本上是一样的,用
String#split
和数组连接:希望这两个中的一个是你问题的解决方案!
5kgi1eie6#
我认为最大的问题是你试图使用一个字符串,而实际上你应该使用一个数组。第二个问题是你混淆了逗号分隔的字符串和数组或列表。
在Ruby中,列表和数组与字符串是不同的对象。字符串很适合存储文本,有时也适合存储二进制数据。
数组很适合存储数据序列,在这种情况下,你需要能够通过数字索引来访问它们。队列和堆栈通常写在数组的顶部,因为数组可以很容易地从开始或结束处添加和删除元素。
出于您的目的,我建议使用Array对象,然后在需要字符串表示时使用
join(',')
数组。tmb3ates7#
别忘了
scan
在我的例子中,我有一个真正的朋友代码,一个“大”整数(8位),为了更好的可读性,我想把破折号每2位:
您的解决方案应该是