Подтвердить что ты не робот

Может преобразовать строку в массив?

# (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(",")

любые идеи

4b9b3361

Ответ 1

Я заметил, что эта страница подходит для общего поиска google в строке "string to char array ruby".

Если вы просто хотите преобразовать строку в массив char в ruby,

"string".chars

Ответ 2

Я не понимаю ваш вопрос, но если вы хотите преобразовать строку в массив

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

Ответ 3

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"

Ответ 4

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"] 

Ответ 5

Если вы пытаетесь присвоить свой "список" строковым представлениям коллекции имен, и вы хотите добавить к нему имя (также строку), разделенное на остальную часть (например) запятой и получим в результате строку, все, что вам нужно, это конкатенация строк:

list + ',' + name

Более удобный способ сделать это, по крайней мере для меня, - это интерполяция строк:

"#{list},#{name}"

Это дает четкое представление о том, что вы обрабатываете данные для его форматирования.

Однако, если вы хотите, чтобы ваш "список" преобразовывался в массив, разбивая его запятыми и добавляя переменную имени в конец, ответ по существу тот же, с String#split и конкатенацией массива:

list.split(',') + name

Надеемся, что одно из этих двух решений - это решение вашей проблемы!

Ответ 6

Я думаю, что большая проблема заключается в том, что вы пытаетесь использовать строку, когда вы действительно должны использовать массив. Вторая проблема заключается в том, что вы путаете строку с разделителями-запятыми с массивом или списком.

В Ruby списки и массивы представляют собой разные объекты, кроме строк. Строки хороши для хранения текстовых и иногда двоичных данных.

Массивы хороши для хранения последовательностей данных, где вам нужно иметь доступ к ним с помощью числового индекса. Очереди и стеки обычно записываются поверх массивов, поскольку массивы упрощают добавление и удаление элементов с самого начала или конца.

Для вашей цели я бы рекомендовал использовать объект Array, а затем join(',') массив, когда вам нужно представление строки.

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