Ответ 1
Я заметил, что эта страница подходит для общего поиска google в строке "string to char array ruby".
Если вы просто хотите преобразовать строку в массив char в ruby,
"string".chars
# (this give me list eg : ,s, s, m ...
list = list + "," + name
Я хочу использовать split и затем присоединиться... попробуйте использовать ниже.. я не знаю, что я делаю
list = list.split(',') + name + collect{|c| c.name}.to_sentence
list = list.split(',') + name + collect{|c| c.name}.Join(",")
любые идеи
Я заметил, что эта страница подходит для общего поиска google в строке "string to char array ruby".
Если вы просто хотите преобразовать строку в массив char в ruby,
"string".chars
Я не понимаю ваш вопрос, но если вы хотите преобразовать строку в массив
>> "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"
Синтаксис Ruby также позволяет вызывающим операторам с "точечным" обозначением, поэтому это может прояснить ситуацию:
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"]
Если вы пытаетесь присвоить свой "список" строковым представлениям коллекции имен, и вы хотите добавить к нему имя (также строку), разделенное на остальную часть (например) запятой и получим в результате строку, все, что вам нужно, это конкатенация строк:
list + ',' + name
Более удобный способ сделать это, по крайней мере для меня, - это интерполяция строк:
"#{list},#{name}"
Это дает четкое представление о том, что вы обрабатываете данные для его форматирования.
Однако, если вы хотите, чтобы ваш "список" преобразовывался в массив, разбивая его запятыми и добавляя переменную имени в конец, ответ по существу тот же, с String#split
и конкатенацией массива:
list.split(',') + name
Надеемся, что одно из этих двух решений - это решение вашей проблемы!
Я думаю, что большая проблема заключается в том, что вы пытаетесь использовать строку, когда вы действительно должны использовать массив. Вторая проблема заключается в том, что вы путаете строку с разделителями-запятыми с массивом или списком.
В Ruby списки и массивы представляют собой разные объекты, кроме строк. Строки хороши для хранения текстовых и иногда двоичных данных.
Массивы хороши для хранения последовательностей данных, где вам нужно иметь доступ к ним с помощью числового индекса. Очереди и стеки обычно записываются поверх массивов, поскольку массивы упрощают добавление и удаление элементов с самого начала или конца.
Для вашей цели я бы рекомендовал использовать объект Array, а затем join(',')
массив, когда вам нужно представление строки.
ary = [] #=> []
ary << 'item 1' #=> ["item 1"]
ary << 'item 2' #=> ["item 1", "item 2"]
ary.join(',') #=> "item 1,item 2"