• ベストアンサー

ruby 配列の中の文字列を全部数値にしたい

array=%w(1 2 3 4) のような文字列の配列があるとします。 これを数値の配列にしたいです。 以下の様にしてみました。 array=array.inject([]){|a,v| a<< v.to_i } これでも出来ましたが、もっとrubyらしい方法ってあったら教えて下さい。

  • Ruby
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • sholmes
  • ベストアンサー率81% (89/109)
回答No.1

新しいArrayが欲しいならmap、既存のArray自体を書き換えたいならmap!が基本かなと思います。 (collectでもいいんですが) その中でいくつか記法は考えられるので、好きなものを選んで下さい http://ideone.com/WLxMN ただ、安全性を重視するなら to_i より Integer() の方がいいかなと思います。

kingfruits
質問者

お礼

sholmesさん、ご回答ありがとうございました。 map知りませんでした。 教えて頂いたサイト、面白いですね。 どうも有難うございました。

関連するQ&A

  • 文字列になっている配列を‥

    以下の値がDBに文字列の項目に登録されています。 DB から値を取得したのはいいのですが文字列なので foreach でグルグルしようとすると怒られてしまいます。 配列の型に変換できればいいのですが(array)だとうまく行かないしどうすればいいかどなたかご教授願えないでしょうか。 よろしくお願いします。 ■値(文字列でDBに格納されてます‥) array( 1=>'a', 2=>'b', 3=>'c', 10=>array( 'A'=>1, 'B'=>'hoge1', ), 11=>array( 'A'=>2, 'B'=>'hoge2', ), 12=>array( 'A'=>3, 'B'=>'hoge3', ), )

    • 締切済み
    • PHP
  • 配列の中に重複文字列があるか否かをチェックしたいのですが、アルゴリズムを教えてください。

    配列10000個の中に次のように文字列が入っているとします。 (実際に使うのはもっとずっと長い文字列が配列内に格納されています。) Data_Array[1] = "GRZRMZCOMKMSG" Data_Array[2] = "DCUIROTLUMWBC" Data_Array[3] = "RGLBMILRPBSMY" . . . Data_Array[9998] = "RSKFDHAHMOESI" Data_Array[9999] = "AQVOXBVNILGOP" Data_Array[10000] = "YNYRUPEXYOGFN" 配列Data_Array[10000]の中に重複文字列がないか探索したいと考えています。 ~普段の手順~ 配列中身を一度テキストに吐き出し、そのテキストをExcelに貼り付ける。 そして、Excelのフィルタ機能で重複文字列を排除。 その後、重複文字列を排除した文字列を保存したものをテキストファイルに保存する。 それをプログラムで読み込んで配列内に格納してから次の処理を続ける といった、効率の悪い方法をとっています。 そこで、プログラム内で処理する方法を次のように考えてみました。 ~思いつく方法~ dim DataArrayTemp[10000] for i = 1 to 10000 flag = 0 // 重複文字がないかチェック for j = i+1 to 10000 ifb Data_Array[i] = Data_Array[j] then // 重複があった場合はflag = 1にする flag = 1 break // 内ループ脱出 endif next // flag = 0であれば重複がない項目 (flag = 1のときは、重複がある) ifb flag = 0 then DataArrayTemp[temp_i] = Data_Array[i] temp_i = temp_i + 1 endif next これは、力技なので配列内の量が多くなると計算時間がかかってしまいます。 ですので、重複しない文字列だけを抽出する効率の良い方法がありましたらどなたか知恵を貸してください。

  • 文字列を配列にしたい

    お世話になります。 PHP4.3.9を利用しているのですが、以下のような文字列を分割して、求める形の配列に入れたいのですが、何か良い方法はありますでしょうか? ■文字列 abc=123&def=456&ghi=789 ■このような形にしたいと思っています↓ $hoge = array(   "abc"=>"123",   "def"=>"456",   "ghi"=>"789" ) ヒントだけでも結構ですので、ご教示いただけると幸いです。宜しくお願いします。

    • ベストアンサー
    • PHP
  • 文字列と文字列をつなげるには

    下記のようにプログラムを作りました。 簡略しているのでわかりづらいと思いますが、 文字の配列と文字の配列を文字の配列に格納したいので、 下記のように$arrayに”.=”として文字列を加えて いますが、うまくいきません。 どのようにしたらいいのでしょうか? ご教授お願いいたします。 while($text[$i] != ""){ if($i==1){ $array[$j] = $feild[$j]; $array[$j] .= " "; $array[$j] .= substr($text[$i], $no, $pos); } }

    • ベストアンサー
    • PHP
  • C#で文字列から数値だけ取得する方法

    C#で文字列から数値だけ取得する方法 stringの文字列をcharの文字配列に入れなおして 数値の場合だけ、別の配列(例:a[3])にコピーする。 そんな方法で数値を抜き出そうかと思っています ですが、文字列から数値だけを見つけ出して取得する方法がわかりません。 詳しくのっているサイトなどありましたら 教えてください…!!

  • 配列で文字列の切り取り[JavaScript]

    配列で文字列の切り取りという言葉が正しいがどうかはわかりませんが、 以下のような配列があるとします。 var array1 = ["xx10","xx11","xx12","xx13"]; これを、下記のように"xx"だけを切り取って、新たな配列として生成できるでしょうか? var array2 = ["10","11","12","13"]; 宜しくお願いします。

  • 数値 1 を文字列"01"に変換したい

    初心者です。教えて頂けますか? ある関数から出てきた配列数からファイル名を指定したいのですが、 数値 1 を文字列"01"に変換するにはどの様にすれば良いでしょうか? よろしくおねがいします。 $array = hoge(); $count = count($array); $countString = $count;//<-ここでどのようにすれば良いでしょうか? $fileName = 'hogehoge'.$countString.'.zip';

    • 締切済み
    • PHP
  • 文字列の配列

    文字列の配列 1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4 のようにIPアドレスが一行に一つづつ書き込まれたテキストがあります。 ここから、それぞれのIPアドレスを文字列として配列に書き込みたいのですが、どうしたらよいのでしょうか。 IPアドレスの数だけ配列を始めに宣言して、それぞれに書き込んでいくのでは手間がかかりすぎてしまいます。 単純に数値の羅列なら scanfを使い、配列に格納できるのですが、文字列になるとどうしたらいいのかわかりません。 よろしくお願いいたします。

  • rubyでn進数(16進数以上)の文字列を扱いたい

    rubyでn進数(16進数以上)の文字列を扱いたいです。 例えば、36進数で4桁を数値を、0~1679616(36^4)通り順に 表示したいです。 36進数を表す文字は、('a'..'z').to_a + ('0'..'9').to_aの様に定義したいと思います。 0~36^4へとインクリメントしつつ、その値を上記で定義した文字を使った 文字列へと変換していけば良いとは、思うのですが、うまいこと書けませんでした。 ご教授の程、よろしくお願いいたします。 

    • ベストアンサー
    • Ruby
  • Perlで"01001"という文字列を数値の1001にさせる方法?

    Rubyなら a.to_iで数値になりますが、Perlだとどのような記述の仕方になるのでしょうか?

    • ベストアンサー
    • Perl

専門家に質問してみよう