我有一个字符串变量,比如说:
str = "hello, world"
我如何将原始字符串转换为单个字符的数组?
上面示例的期望结果是:
['h', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd']
我有一个字符串变量,比如说:
str = "hello, world"
我如何将原始字符串转换为单个字符的数组?
上面示例的期望结果是:
['h', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd']
我注意到这个页面在通用的“string to char array ruby”谷歌搜索中出现。
如果你只想在Ruby中将字符串转换为字符数组,
"string".chars
# ["s", "t", "r", "i", "n", "g"]
>> "a string".split("")
=> ["a", " ", "s", "t", "r", "i", "n", "g"]
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"
str.split(/,/).<<('d').join(',') # => "a,b,c,d"
str.split(/,/).<<(list2).join(',') # => "a,b,c,d,e,f"
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"]
我认为主要问题是你试图使用字符串,而实际上应该使用数组。第二个问题是你将逗号分隔的字符串与数组或列表混淆了。
在 Ruby 中,列表和数组是不同于字符串的对象。字符串适用于存储文本和有时二进制数据。
数组适用于存储数据序列,需要通过数值索引进行访问。队列和栈通常是基于数组编写的,因为数组使得从开头或结尾添加和删除元素变得容易。
对于你的目的,我建议使用一个数组对象,然后在需要字符串表示形式时,使用join(',')
将数组连接起来。
ary = [] #=> []
ary << 'item 1' #=> ["item 1"]
ary << 'item 2' #=> ["item 1", "item 2"]
ary.join(',') #=> "item 1,item 2"
不要忘记 scan
在我的情况下,我有一个真正的朋友代码,一个“大”的整数(8位数字),为了更好的可读性,我想每2个数字放一个破折号:
friend_code.scan(/../).join("-")
你的解决方案将会是:
friend_code.scan(/./).join(",")
list + ',' + name
我认为更好的方法是使用字符串插值:
"#{list},#{name}"
这使得你正在操作数据以格式化它更加清晰。
然而,如果你想通过逗号将你的“列表”转换为数组并在末尾添加名称变量,答案基本相同,使用 String#split
和数组连接:
list.split(',') + name