[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 03/12 09:10 / Filesize : 211 KB / Number-of Response : 848
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Ruby 初心者スレッド Part 35



1 名前:デフォルトの名無しさん [2010/03/04(木) 11:00:57 ]
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

★注意★ Ruby 1.9.1 は初心者にはまだ時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
   (理由:現時点では有名ライブラリやアプリが 1.9.1 に完全には対応していないためです)
 1.8.7 でも 1.9 系に導入された新機能のいくつかが利用可能なため、1.8.7 を習得すれば将来スムーズに 1.9 系に移行できるでしょう。

関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。

■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
 ・モジュール名やエラーメッセージでググる
 ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/
 ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・エラーメッセージ(自力で訳さずなるべくそのままで)
 ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。

■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

401 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 13:52:19 ]
>>400
動かないのならエラーメッセージを貼っておくれ

スクリプトをダブルクリックして実行したのなら
コマンドプロンプトから実行して

402 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 13:59:36 ]
おー、WindowsでQtライブラリ使ってる人初めて見た

403 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 14:08:03 ]
rubygemsでインストールしたパッケージのヘルプってどうやって見れますか?

404 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 14:09:59 ]
>>398
書かない場合は US-ASCII を指定したのと同義。
ASCII文字しかないなら書いても書かなくても結果は同じ。

8ビット目が立ったシングルバイト文字は入れてないよね?


405 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 14:12:27 ]
>>403
riかrdocか。
gem server を起動して localhost:8808/ でも読める。


406 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 14:13:09 ]
正規表現の動作が変わるんじゃなかったか

407 名前:400 mailto:sage [2010/03/13(土) 14:14:30 ]
>>401
test.rb:1:in `require': no such file to load -- Qt4 (LoadError)
from test.rb:1
見てのとおりライブラリの読み込みに失敗しています

let-your-heart-soar.txt-nifty.com/blog/2008/07/qtqtrubywindow_82d9.html
この通りにやって、C++のチュートリアルは動くようになっています
でも、こんな事をやってqtrubyに関係あるのか疑問

>>402
ruby gtk2を使おうかなと思ったけど、gtk+のライブラリ全然わかんないから
linuxでもqtrubyが動けば、linuxで開発してwindowsでexeを作ろうかな〜と

それに、2週間くらい前にこんな本を買ったし
>入門 Qt 4 プログラミング
>ttp://www.oreilly.co.jp/books/9784873113449/

408 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 14:15:52 ]
>>403
gemディレクトリ/ruby/1.8とか/doc/ の中にファイルが入ってるので好きなときに読め
ActiveSriptRubyの場合はC:\Program Files\ruby-1.8\lib\ruby\gems\1.8\doc\

409 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 14:17:57 ]
>>407
require 'rubygems'
require 'Qt4'



410 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 14:25:42 ]
>>406
US-ASCIIなソースにUS-ASCII以外のマジコメを書く場合?

411 名前:400 mailto:sage [2010/03/13(土) 14:26:51 ]
>>409
文法を覚える前にテストをするもんじゃないですねwww
助かりました、ありがとうございます

412 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 14:44:08 ]
>>403
HTMLファイルでいいならシェルから

gem environment

した出力の

- GEM PATHS:

の1行目(になかったら2行目)の場所の doc ディレクトリの中に

413 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 16:20:07 ]
#=>って習慣なの?

414 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 16:25:32 ]
>>413
doc.okkez.net/187/view/help

415 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 16:26:05 ]
習慣かどうかはしらん
ふつうコメントの直後にスペースをひとつ挟むから
# => value だよな
はちどりのRuby本もそうなってる

416 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 16:39:23 ]
個人的にはあまり好きではない
まあ、書籍向けの表現だと思う

417 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 17:23:40 ]
gem install -r XXXX
ERROR: could not find gem XXXX locally or in a repository
何これ?

418 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 17:33:32 ]
文字通り。


419 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 17:33:47 ]
>>417
その質問に至った経緯をまず聞こうか



420 名前:413 mailto:sage [2010/03/13(土) 17:37:04 ]
>>419
linuxでそう入力しただけだけど
得にそれ以外に何もしていない

421 名前:420 mailto:sage [2010/03/13(土) 17:37:46 ]
名前を間違えた
>>417

422 名前:420 mailto:sage [2010/03/13(土) 17:39:28 ]
ごめん、ただのスペルミスですたorz

423 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 17:39:54 ]
まずはgem search- rを使うんだ、でその結果から選ぶがよろし
自分で入力せずに素直にbash,zshの補完機能に頼った方がいいと思う

424 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 21:46:53 ]
他の言語のisXXXメソッドは、XXX?とrubyではなってるみたいですね
三項演算子とかと一緒に使うと読みにくいと思います
お前らはどうやっていますか?

return windows.visible? ? 値A : 値B

425 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 22:07:58 ]
それほどでも・・・
return (windows.visible?) ? 値a : 値b


426 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 22:10:57 ]
ぶっちゃけ、うっかり
window.visible? A : B
と書いて怒られることはよくある。


427 名前:424 mailto:sage [2010/03/13(土) 22:13:57 ]
そんなもんですか
そんじゃ気にしないようにしますわ

428 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 22:20:29 ]
条件演算子はぶっちゃけそれほど使わない
不自然感を感じてるうちにifとかに書き換わるのでむしろラッキー

429 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 23:03:17 ]
include Enumerable した場合、自分のクラスで each を定義しますが

def each
@array.each do |e|
yield(e)
end
end

def each(&block)
@array.each(&block)
end

どちらが好ましい書き方なんでしょうか?



430 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 23:27:40 ]
後者

irb1.9> class C; include Enumerable; def initialize; @a=[1,2,3]; end; def each(&b); @a.each(&b); end; end
irb1.9> p C.new.each
#<Enumerator:0x931483c>

irb1.9> class C; include Enumerable; def initialize; @a=[1,2,3]; end; def each; @a.each{|e| yield(e)}; end; end
irb1.9> C.new.each
LocalJumpError: no block given (yield)


431 名前:429 mailto:sage [2010/03/13(土) 23:43:14 ]
>>430
なるほど、ありがとうございます。

432 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 00:00:43 ]
前者は昔の名残だね。

433 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 00:10:16 ]
前者は return @array.to_enum unless block_given? を最初
にやればよさそうだけど、今回は無理に使うこともないな。


434 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 00:16:42 ]
javaかC++のプログラマのための、Ruby入門のサイトを教えてください

435 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 00:19:42 ]
www.google.co.jp/search?q=Ruby%E5%85%A5%E9%96%80&ie=UTF-8

436 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 00:21:15 ]
C++やJavaの特有事情は忘れて勉強したほうが習得はうまくいきそうな気がする
それこそBasicの制御構造レベルの知識だけある人のほうが吸収早そう

437 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 00:44:12 ]
>>424
return windows.visible?? a : b
疑問符を二個つなげてすげー疑問って雰囲気を醸し出す

438 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 00:48:41 ]
>>386 のチケット、 r26909 で修正された。
$ ruby -ve "puts File.expand_path('あ', '/'.force_encoding('US-ASCII'))"
ruby 1.9.2dev (2010-03-13 trunk 26909) [x86_64-darwin10.2.0]
/あ


439 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 02:15:40 ]
>>430
前者の書き方しか知らなかった。



440 名前:66 mailto:sage [2010/03/14(日) 07:03:08 ]
>>395
今度から本スレに書きます。

>>438
ありがとうございました。
確認しました。


441 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 08:44:47 ]
春休みで盛況だなw

442 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 11:49:30 ]
moduleってパッケージとMixinを、実現するための予約語なんだよね
Mixinは実装を持ったインターフェイスみたいなもんだから、
moduleはmoduleを継承する事ができるの?

443 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 12:18:51 ]
>>438
乙乙!!

444 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 12:24:46 ]
>>442
> moduleはmoduleを継承する事ができるの?
そもそも文法的に継承できない(module M2 < M1 は SyntaxError)

メソッド検索順位のひとつ上にモジュールをぶちこむ include を使う

module M1; def m; "M1!"; end; end
module M2; include M1; end # M2 の上に M1
module M3; include M2; end # M3 の上に M2
module M4; include M3; end # M4 の上に M3
class C; include M4; end # C の上に M4

p C.new.m
p C.ancestors # 継承とインクルード込みの検索優先順位を表示

結果

"M1!"
[C, M4, M3, M2, M1, Object, Kernel]

検索順位的には継承と同じなので実用上の問題はない

class C1; end
class C2 < C1; end
class C3 < C2; end
p C3.ancestors #=> [C3, C2, C1, Object, Kernel]

445 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 12:40:44 ]
じゃあ継承でいいじゃん

446 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 12:46:49 ]
>>445
よくねー

人間を継承した俺がいたとして、翼が欲しいと思ったら

class 俺 < 翼
end

するのか? 俺は翼の一種なのか? 俺は翼の子分か? 人間且つ翼の俺って何?
翼って機能だろ

class 俺
機能追加 翼
end

とするのが筋だろ、わかりやすいし、渾然一体になる継承よりは機能外すのも簡単そうだ
だから翼はモジュールにして、includeで追加する

実際は
俺 = 人間.new(params)
俺.extend(翼)
とするのが妥当ではあるがまあ細かいこと気にするな禿げるぞ

447 名前:442 mailto:sage [2010/03/14(日) 13:12:23 ]
>>444,>>446
ありがとう

>>445
なりすましっぽく見えるレスだな

448 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 23:18:08 ]
○引数で複数のディレクトリパスを与える
○与えられたディレクトリに対して再帰的にファイルを全て削除する
○ただし.txt拡張子が付くファイルのみ削除しない

プログラミングに不慣れながらこんなスクリプトを書こうと思い、以下のようになりました。

#!/usr/bin/ruby
require 'fileutils'
ARGV.each do |i|
FileUtils.rm(Dir.glob(i + '**/*[^(txt)]'), :force => true)
end

突っ込みどころなどありましたら教えていただけないでしょうか。
簡単なテストをすると意図したように動くのですが少し不安なので質問させていただきました。
自分で怪しいと思ってる箇所は以下の2箇所です。
@ i + '**/*[^(txt)]' こんな指定の仕方でいいのだろうか
AそもそもFileUtilを使うべきなのか

宜しくお願いします。

449 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 23:25:51 ]
>>448
他のスレから飛ばされてきたなら、
飛ばされましたって書かないとダメだよ



450 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 23:39:50 ]
>>448
死んでいいよ

451 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 23:41:46 ]
Dir.globのワイルドカードはあまり知らんが(Windowsユーザーなもので)
否定形なのはRubyでやったほうが無難だと思う

Dir.glob(i.sub(/\/?$/,'/**/*')).reject{|e| test(?d,e) or e =~ /\.txt$/i}


452 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 23:43:52 ]
i ってなんだろう?
そもそもグロブでいいのか。

453 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 23:45:01 ]
require 'fileutils'
noop = verbose = ARGV.include?(':noop')
ARGV.each do |s|
pathlist = Dir.glob(File.join(s, '**/*'))
pathlist.delete_if{|path| File.extname(path) == '.txt'}
pathlist.each do |path|
FileUtils.rm(path, :force => true, :noop => noop, :verbose => verbose)
end
end

$ ruby ./del.rb tgtdir :noop


454 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 23:45:48 ]
*[^(txt)] は、
最後の文字が 開き括弧 でも t でも x でも t でも(アゲイン) 閉じ括弧 でもない
という意味になるんじゃないか?





455 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 23:48:11 ]
>>453
next ですっ飛ばしていいと思う

require 'fileutils'
noop = verbose = ARGV.include?(':noop')
ARGV.each do |s|
Dir.glob(File.join(s, '**/*')).each do |path|
next if File.extname(path) == '.txt'
FileUtils.rm_r(path, :force => true, :noop => noop, :verbose => verbose)
end
end


456 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 23:48:38 ]
>>454
それはない

457 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 23:56:02 ]
$ ls
x.c x.doc x.tex x.txt
$ ruby -ve 'p Dir.glob("*[^(txt)]")'
ruby 1.8.7 (2008-08-11 patchlevel 72) [universal-darwin10.0]
["x.c", "x.doc"]


458 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 23:57:18 ]
はいはい勘違いゴルファーは帰ってね

459 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 23:58:40 ]
[^(txt)]を検証しただけじゃね?



460 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 00:00:42 ]
マニュアル嫁でよくね?

461 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 00:01:32 ]
どっちでもいいよ…

462 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 00:04:39 ]
ここは初心者スレだろ?
テンプレ読めない奴はカエレ
暴れるなら本スレでやr

463 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 00:05:49 ]
検証が漏れてないかどうかはどうやって検証すればいいのかという

464 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 00:11:10 ]
>>458
どこをゴルフと誤認したのか気になる。


465 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 01:18:47 ]
rmdir -rで綺麗さっぱり消せばいいのにw

466 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 01:54:20 ]
RubyをWindowsで開発環境構築する方法教えてください。
OSはWindows7です

467 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 01:55:11 ]
開発環境ってたとえばなーに

468 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 02:22:10 ]
>>448
「再帰的」と書かれていますが、別に find を使うような要件ではなく
引数のディレクトリ直下のみ走査すればよさそうなので、こんなかんじ
ではいかがでしょうか。

require 'pathname'
ARGV.each do |d|
Pathname(d).children.each do |f|
f.unlink unless f.extname == ".txt"
end
end

# Pathname は標準添付ライブラリだから使ってもいいよね

ところで、Ruby に限らず Perl でも Python でも glob ってシェルの
ワイルドカード展開のエミュレートだと思いますが、機能としては中途半
端(文字列の単純比較 < glob < 正規表現活用)ですし、プラットフォーム
毎に微妙な挙動差も考えるとムダにドツボにはまりそうですし、(少なく
とも「初心者」は)あまり積極的に使わない方がよくない?


469 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 02:33:02 ]
>>468
書いてるあなたがすでにglobの罠にはまっているという。
再帰的に走査したいんだよ。> **/



470 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 02:42:35 ]
Dir.glob('**/*') は許容されるべき
というか普通はこれしか使わない
残りは返ってきた配列に入った文字列を正規表現とかでどうにかする
短く1行で書かないと家にいる妻がスナイパーに撃たれるとかそういう時にのみグラブ条件を書く

471 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 04:18:21 ]
1行記述を強要する妻かw

472 名前:468 mailto:sage [2010/03/15(月) 05:11:59 ]
>>469
うへ、自分がドツボにはまっていました、というか **/* の意味を
知らんかった orz

>>470
を参考に Pathname.glob でも使えばよいのでしょうが、あえて
Find 利用ということで:

require 'pathname'
require 'find'
Find.find(*ARGV) do |f|
t = Pathname(f)
t.unlink if t.file? and t.extname != ".txt"
end




473 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 05:24:32 ]
>>471
強要しているのはスナイバーかと。>>470 は愛妻家なんですね。

474 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 08:55:46 ]
いや恐妻家なんだろうw

475 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 09:57:07 ]
要求を呑まないと何も知らない家族が射殺されるというのはわりとポピュラーな展開かと

グラブ文字処理はメソッド独自だから、明白な全抜き出し以外は正規表現などを駆使、という方向性は妥当
グラブ処理の時点で小細工すると後々遺恨になるぞ

476 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 10:41:36 ]
なるほど

477 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 12:43:17 ]
>>466
まずはテンプレくらい嫁よ

・ActiveScriptRubyをインスコ
・るびまのchmをダウンロード
・NetBeans IDE(統合開発環境)をインスコ

これでなんとかなるだろ。Rails開発ならcoLinuxかPortableUbuntu入れろ。

478 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 12:44:12 ]
>>466
あ、あと、c:\Program Files\以下にはRubyをインスコしない方がいいみたい。
RubyGemsが動作しないとかの報告があった
(今のバージョンはどうかしらん)

479 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 12:53:05 ]
ねこび〜ん勢力の工作を検知しました



480 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 13:02:44 ]
Windowsでも、XPなら
c:\usr\local\ruby
とかにインストールした方が精神衛生上よろしい気がする
UACとか入るとそう簡単にはいかないんだろうけど

481 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 13:17:04 ]
>>479
ねこび〜んはダメだね
コードの補完が遅すぎて使えない

482 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 13:35:16 ]
ActiveScriptRubyはデフォルトのインストール場所が性善説に過ぎる
ttp://d.hatena.ne.jp/kitamomonga/20100202/ruby_watir_crash_with_autoitx3
まあこれは間違えるほうが悪いんだけれども

483 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 14:06:24 ]
array = [1,2,3,4,5]とすると配列ができますが、わかんなくなりませんか?
javaとかだったら、IDEが配列だよって教えてくれるけど

やっぱり、最初にこうするべきなんですかね?
array = Array.new


484 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 14:20:31 ]
>483
ならない

Array.new はリテラルに比べると遅い。

485 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 14:21:39 ]
>>477
>・るびまのchmをダウンロード
リファレンスchmならASRに同梱されてたはず
それと初心者スレでるりまとは呼ばない方がいいよ

486 名前:483 mailto:sage [2010/03/15(月) 14:27:49 ]
>>484
そうですか
ありがとうございます

487 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 14:44:11 ]
a = [1, 2, 3, 4, 5] はわけわかんなくならないが

hogedata = []



hogedata = {}

との区別がわけわかんなくなることはある
ので、そういうときは

hogedata = Array.new

と書くことはある
要素が入ってれば配列なのか Hash なのかは一発なのでわざわざ初期化なんてしない

488 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 15:14:22 ]
>>485
> それと初心者スレでるりまとは呼ばない方がいいよ
なんで?


489 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 16:05:56 ]
というかるりまるびまってなんですか?



490 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 16:18:20 ]
ここは大喜利すべきか

491 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 16:21:11 ]
まあ、マニュアルという認識でいいよ
chm形式のマニュアル読んでれば十分

492 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 16:24:11 ]
>>488
マイナーな専門用語は避けるべき。初心者スレだし。

493 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 16:25:13 ]
>>488
まさにこの流れが理由
るびまと区別がついてないならなおさら

494 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 16:50:12 ]
何やら貢献できたようで何より
1.9.1は初心者向けじゃなかったのかー
今まさにダブルクリッコするところだったぜー
ここに来てよかった
ってことでActiveScriptRubyなるものをダウソしてきます

495 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 16:51:41 ]
ここIDないのね
494は489の人てことでw

496 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 17:31:53 ]
質問です
エクセルで書かれた名簿を整理して出力するプログラムを書いているのですが、
名前、郵便番号、住所の分離が上手くいきません
与えられた名簿は半角or全角スペースで区切られているのでsplitを使おうと試みているのですが、
例えば以下のように記述すると"―"や"県"が消えてしまいます

puts '山田 太郎   〒0000−0000 山田県山田333-333-333-333'.split(/[  〒]+/)

何か良い知恵があればなにとぞご教授お願いします
ちなみに元のプログラムではputsせず、分離後にある配列に入れています

497 名前:496 mailto:sage [2010/03/15(月) 17:34:18 ]
追記失礼します
rubyはver1,87を使用しております

498 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 17:48:49 ]
>>496
Excelってことなので、WindowsでSJISのソースコードとして、
スクリプトの先頭に

#! ruby -Ks

もっと推奨の方法があったかもしれない

499 名前:496 mailto:sage [2010/03/15(月) 17:51:44 ]
>>498
ご教授いただいたとおりにしたところ速やかに改善されました!
ありがとうございます



500 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 17:53:59 ]
Rubyが取り扱う文字のエンコーディングを指定しなければASCIIとして扱われてしまうのでそういうことになる
Ruby 1.8まででは
1 Ruby起動時にスイッチで -Ks とかで指定する
2 スクリプト先頭に
#!ruby -Ks
とか書いておくとスクリプト実行時にそのスイッチが考慮される
3 $KCODE を設定する
4 個々の正規表現のオプションでエンコーディングを指定する

ただし1,2はスクリプト自体のエンコーディングと正規表現の振る舞いの両者を変更するが
3,4だと正規表現の振る舞いを変えるだけなので
スクリプトがシフトJISで書かれていると
p "表"  # エンコーディングを正しく指定しないと 文字列リテラルが終了してないことに("\225\" と同じ扱い)
とかのいわゆるダメ文字(2バイト目が\)問題にぶち当たる

UTF-8やEUC-JPだとそのような問題は起きない(のかな?)







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<211KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef