2011-02-02 10 views
19
# (this give me list eg : ,s, s, m ... 
list = list + "," + name 

que quiero usar dividida y luego unirse a ... tratar de utilizar below..i no sé lo que estoy haciendopuede convertir cadena en matriz?

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

alguna idea ??

+0

sería útil si muestra la entrada y la salida que desee. –

+0

Sí, lo sé, pero una vez que convierto una cadena dividida, quiero agregar otra cadena y luego quiero convertirla en una matriz usando join – user557657

+0

"Es difícil decir lo que se pregunta aquí. Esta pregunta es ambigua, vaga, incompleta, excesivamente amplio, o retórico y no puede ser razonablemente respondido en su forma actual ". –

Respuesta

19

no entiendo su pregunta, pero si desea convertir cadena a la matriz

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

Sí, lo sé, pero una vez que convierta una cadena dividida, quiero agregar otra cadena en ella y luego quiero convertirla en una matriz mediante la combinación – user557657

+0

, debe proporcionar un ejemplo de lo que desea hacer. No puedo visualizar lo que estás diciendo. – kurumi

+0

"luego quiero convertir en matriz usando join" Esto no tiene sentido. No puede convertir una cadena en una matriz usando join. –

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

Desde su comentario, parece que desea añadir también una cadena (o varias cuerdas) a la lista y luego unirse nuevamente a otra cadena. Tal como esto:

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

sintaxis de Ruby también permite realizar llamadas a los operadores la notación "punto", por lo que este podría aclarar la situación:

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

str = "a, b, c" ahora dividimos str y el resultado es ["a", "b", "c"]. Ahora quiero agregar una cadena en str (después de dividir) y luego quiero unir str + string usando join (",") ????? – user557657

+0

@user - ver mi respuesta actualizada, espero que esto ayude. – maerics

0

Si usted está tratando de tener su "lista" ser una cadena de representación de una colección de nombres, y desea agregar un nombre a esa (también una cadena) delimitada del resto por (por ejemplo) una coma, y ​​el resultado es una cadena, todo lo que necesita es concatenación de cadenas:

list + ',' + name 

Una manera más agradable de hacer esto, al menos para mí, es la interpolación de cadenas:

"#{list},#{name}" 

Esto hace que sea más clara de que está manipulando datos para formatearlo.

Sin embargo, si usted quiere tener su "lista" convertir en una matriz mediante su división por comas y añadir la variable de nombre hasta el fin, la respuesta es esencialmente el mismo, con String#split y la matriz de concatenación:

list.split(',') + name 

¡Esperamos que uno de estos dos sea la solución a su problema!

0

Creo que el gran problema es que estás tratando de usar una cadena, cuando realmente deberías estar usando una matriz. Un segundo problema es que está confundiendo una cadena delimitada por comas con una matriz o lista.

En Ruby, las listas y las matrices son objetos diferentes a las cadenas. Las cadenas son buenas para almacenar texto y, a veces, datos binarios.

Las matrices son buenas para almacenar secuencias de datos, donde necesita poder acceder a ellas mediante un índice numérico. Las colas y las pilas generalmente se escriben encima de las matrices, porque las matrices facilitan la adición y eliminación de elementos desde el inicio o el final.

Para su propósito, recomendaría usar un objeto Array, luego join(',') la matriz cuando necesite la representación de la cadena.

ary = []  #=> [] 
ary << 'item 1' #=> ["item 1"] 
ary << 'item 2' #=> ["item 1", "item 2"] 
ary.join(',') #=> "item 1,item 2" 
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"] 

pero es probable que desee algo como esto (las cadenas de entrada de proceso y ensamblarlos en una matriz):

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

me di cuenta que esta página aparece por medicamentos genéricos búsqueda en Google de "cadena para char array ruby ​​".

Si lo que desea es convertir la serie de charlas de matriz en rubí,

"string".chars

+1

corto y dulce, justo lo que necesitaba – Joseph

Cuestiones relacionadas