• ベストアンサー

Rubyによる文字抽出

こんにちは。1週間ほど前からRubyを始めた者です。 任意の文字列から指定したIndexの1文字を取り出したいのですが、 s = "Apple" puts s[0] のようにすると実行結果は 65 となってしまいます。本当は"A"と出て欲しいのですが。 65とAは一対で対応しているのだと思いますが、文字そのものを出すにはどうしたらよいのでしょう? どなたかご教授頂けないでしょうか?

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4858/10274)
回答No.1

文字列に対して添え字に数字だけを書くと、その位置の文字コードになります。長さ1の文字列を得るには、 ・0文字目から1文字 ==> s[0,1] ・0文字目から0文字目 ==> s[0..0] のいずれか。

namuchi
質問者

お礼

できました! ありがとうございます!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Ruby1.9での文字列操作について。

    Ruby1.9での文字列操作について。 今までRuby1.8を使用していましたが、Ruby1.9に変えてから、次の4種類の問題が出てきました。 (※Ruby1.9に変えてから、#encoding: shift_jisを定義しております) どれか1種類でも結構ですので、Ruby1.9での対策、代替の処理について教えてください。 <問題1> ■文字列を指定のバイト位置まで削除する □現在(Ruby1.8)のコード moji = "1あアあアイ234565789" moji[4,14] = "" →1.8では、"1あア"となりますが、1.9では、"1あアあ"となります。 <問題2> ■文字列の中から指定文字が見つかったバイト位置の算出 □現在(Ruby1.8)のコード n = "あいうえお".index("う") →1.8では、n=4となりますが、1.9では、n=2となります。 <問題3> ■指定した年月日の存在チェック □現在(Ruby1.8)のコード y = 1900 m = 3 d = 10 if Date.exist?(y,m,d) p "test# end →1.8では、trueとなりますが、1.9では実行時にNoMethoodErrorとなります。 <問題4> ■半角英数字→全角英数字変換 □現在(Ruby1.8)のコード sss = moji.tr('a-zA-Z0-9', 'a-zA-Z0-9') →1.9では実行時にエラーメッセージが出力されます(略) 色々と書きましたが、どうかお助けください。

    • ベストアンサー
    • Ruby
  • Ruby 1.9.3でShift-JIS文字列を

    よろしくお願いします。 Rubyでスマフォ(SH-02D)の電話帳のQUOTED-PRINTABLEの文字列を WindowsのShift-JIS文字列に変換してファイルに出力したいのですが putsだと日本語文字列に見えるのですが、printだと[]で囲まれた16進数の (一部は^のように表示されますが)列になってしまいます。 ネットで検索してもprintはそのまま、putsは強制改行があるという 違いしかないように思えるのですがどうすればputsと同じ出力を 強制改行無しに出力できるのでしょうか。 RubyはWindows 7 Professional x64でeclipse INDIGOにAptana Studioを 入れて入力&実行しています。 (プレアデスも入ってます。ソースのエンコードはS-JISです。) sub_column = column[i].split("/;/") quoted_string = sub_column[j].unpack("M") puts quoted_string print quoted_string ---- (抜粋) でputsとprintで見え方が違うのです。

  • Rubyで文字列の抽出

    Rubyで質問があります。 AAAA;BBBB、CCCCC=DDDDD という文字列が存在したときに、 AAAAとBBBBとCCCCCとDDDDDの文字列を取得したいです。 splitは、特定の区切り文字しか対応していないようなので、複数の区切り文字を指定出来る方法はありませんでしょうか? 確かにsplitで地道に処理するより もうちょっと効率的な方法はないか知りたいです。

  • rubyのunlessで遊んでいたら

    Rubyのunlessで適当にプログラムをつくって遊んでいました。 01:a = 10 #aに10を代入 02:b = 20 #bに20を代入 03: 04:unless a > b 05: puts "aはbより大きくない" 06:else 07: puts "aはbより小さくない" 08:end 09:#unless文にはelsif節等がなく、条件項目を増やせないのでaとbの値が同じ場合は 10:#どうしようかと、これをif文で補おうとしました。 11:if a = b 12: puts "aとbは同じです" 13:end 14: 15:puts "a=#{a} b=#{b}" そもそも、aとbの値が同じでない場合11行目のifが実行されることは無いだろうと思っていたのですが実効結果は ↓ aはbより大きくない aはbと同じ a=20 b=20 という結果がでました。実行結果一行目の「aはbより大きくない」と出力されたのはプログラム4行目のunless文の返した結果だろうと理解できましたが、実行結果2行目のif文の結果である「aはbとおなじ」が出力されたのか、実行結果3行目でaとbの変数内を参照しておりますが、ここでどうしてaの値が20に変更されているのか、わかりません。 詳しい方いらっしゃいましたらご教授願います。

    • ベストアンサー
    • Ruby
  • Rubyについての質問です

    Rubyでちょっとわからないことがあって、マニュアルを見ても解決しなかったので、こちらに質問しました。 たとえば a = 10 puts "Answer" puts a というソースがあったとして、これを実行すると Answer 10 と出力されます。 ここで質問なんですが、aという変数を用いて Answer = 10 のように出力するにはどうしたらいいのでしょうか? たとえばJavaだったら int a=10; system.out.print("Answer" + a); と同じような出力結果にしたいんです。

  • Rubyについて質問です

    Rubyについて質問です class Document #省略 def each_word word_array = words index = 0 while index < words.size yield(word_array[index]) index += 1 end end end d = Document.new('Truth', 'Gump', 'Life is like a box of...') d.each_word { |word| puts word } このような例題があるのですが、 このまま実行しても引数エラーがでてしまいます。 「省略」のところをどのように追加すれば実行できるようになりますか? 参考書:ELOQUENT RUBYの中の例題です ちなみに実行結果は以下の通りです Life is like a box of ... どうかよろしくお願いいたします

  • Ruby2.0 String で ERR

    以下のようなコードをruby1.8系で実行してもOKなのですが、 s=String.new("\0"*4) s[0]=8 puts s.unpack("H*") ruby2.0で実行すると、 `[]=': no implicit conversion of Fixnum into String (TypeError) とERRになってしまいます。 ruby2.0ではどうかいたら宜しいでしょうか?

    • ベストアンサー
    • Ruby
  • ruby forkについて教えて下さい

    親プロで用意した配列の中の要素を一つづつ子プロでputsした後、最後一回、親プロで生成した子プロのPIDを確認したいです。 こんなふうに書いてみました。 #!/usr/bin/ruby table=%w(a b c d) array=[] while i=table.pop do if pid=fork then array.push pid puts pid break if table.size > 0 p array else puts i end end 実行すると、以下のような結果になりました。 $9200 c 9201 b 9202 [9202] a $ PIDが一つしか得られてません。 どうしたらよいでしょうか? ご教授の程、宜しくお願いいたします。 rubyは 1.8.7 を使ってます。 以上、宜しくお願いいたします。

    • ベストアンサー
    • Ruby
  • rubyの文法について質問です。

    rubyの文法について質問です。 aaa = `diff -q bbb ccc` のような形でdiffコマンドの実行結果をaaaに格納したいのですが bbb及びcccを任意に入力したく、一度getsメソッドでbbb,cccそれぞれに文字列を代入したのですが、それをバッククォーテーション内で使用できず困っています。 なにか解決策がありましたらご教授いただけるとありがたいです。 よろしくお願いします。

    • ベストアンサー
    • Ruby
  • rubyのプログラム

    プログラミング初心者です。参考書のソースコードをそのままコピペして実行したのですが、エラーが出てしまいます。どこが間違っているのかご指摘いただけると助かります。 ソースコード #encoding: cp932 # うるう年かどうかによって時間数は変わります puts 24*365 puts " (#{24*366}になる場合もある) " 実行結果 >ruby calc.rb calc.rb:4: invalid multibyte char (Windows-31J) calc.rb:4: syntax error, unexpected tIDENTIFIER, expecting $end puts "(#{24*366}になる場合もある)" ^ >Exit code: 1 パソコンOS Windows7 rubyのバージョン 1.92

    • ベストアンサー
    • Ruby
このQ&Aのポイント
  • 筆ぐるめ年賀状のCD取り込み後、ハガキ指定ができない
  • A3A4と設定がおかしい、プリンターデバイスチェックで印がない
  • スマホから写真プリントができるが、年賀状作成に困っている
回答を見る