web-dev-qa-db-ja.com

文字列を配列に変換できますか?

# (this give me list eg : ,s, s, m ...
list = list + "," + name

私は分割を使用してから参加したい...以下を使用してみてください..私は何をしているかわからない

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

何か案は??

23
user557657

このページは、「文字列から文字配列Ruby」の一般的なGoogle検索で表示されることに気付きました。

Rubyで文字列をchar配列に変換するだけの場合、

"string".chars
# ["s", "t", "r", "i", "n", "g"]
42
Jason Kim

私はあなたの質問を理解していませんが、文字列を配列に変換したい場合

>> "a string".split("")
=> ["a", " ", "s", "t", "r", "i", "n", "g"]
18
kurumi
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
maerics
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"] 
1
Tilo

大きな問題は、実際に配列を使用する必要があるときに、文字列を使用しようとしていることだと思います。 2番目の問題は、コンマ区切りの文字列と配列またはリストを混同していることです。

Rubyでは、リストと配列は文字列とは異なるオブジェクトです。文字列は、テキストおよび場合によってはバイナリデータの保存に適しています。

配列は、データのシーケンスを格納するのに適しています。この場合、数値インデックスを使用して配列にアクセスできる必要があります。配列を使用すると、開始または終了から要素を簡単に追加および削除できるため、通常、キューとスタックは配列の上に書き込まれます。

目的のために、Arrayオブジェクトを使用することをお勧めします。文字列表現が必要な場合は、join(',')配列を使用します。

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

scanを忘れないでください

私の場合、読みやすくするために、2桁ごとにダッシュを付けたい、本当の友達コード、「大きな」整数(8桁)があります。

friend_code.scan(/../).join("-")

あなたの解決策は

friend_code.scan(/./).join(",") 
0
halfbit

「リスト」を名前のコレクションの文字列表現にしようとしており、その名前(文字列でもある)に(たとえば)コンマで区切られた名前を追加して、結果を得る場合文字列で、必要なのは文字列の連結だけです:

list + ',' + name

これを行うより良い方法は、少なくとも私にとっては、文字列補間です:

"#{list},#{name}"

これにより、データを操作してフォーマットすることが明確になります。

ただし、「リスト」をコンマで分割して配列に変換し、名前変数を最後に追加する場合、答えは基本的に同じで、String#splitおよび配列連結:

list.split(',') + name

うまくいけば、この2つのうちの1つが問題の解決策になります。

0
Tom