BETA

Rubyチートシート(一部)

投稿日:2020-04-10
最終更新:2020-05-07

※この記事は、Qiitaに投稿した記事を一部変更したものです。
https://qiita.com/kunosu/items/37a8222239f3c7f8d59a


徐々に増やしていく予定。

実行時の引数を取得

# 引数の数が2以外ならNG  
if ARGV.size == 2  
    folder_pass = ARGV[0]  
    str = ARGV[1]  
else  
    puts "ruby #{__FILE__} フォルダパス 検索条件 の形式で実行"  
    exit 1  
end  

文字列

文字列が含まれているか

真偽を返す

str.include?("r")  

正規表現に一致するか

str =~ /<(\w+)>/  

一致した部分を置換

# "\"(円マーク)を"/"に変換  
folder_pass = ARGV[0].gsub("\\", "/")  

正規表現も可能

# 第2引数が "" の場合は、一致した部分の削除になる  
str.gsub(/<(\w+)>/, "")  

文字コード

文字コードの確認と変換

str = "あいう"  

# 文字コードの確認  
str.encoding  
# => #<Encoding:Shift_JIS>  

# 変換  
str.encode(Encoding::UTF_8)  
str.encoding  
# => #<Encoding:UTF_8>  

今日の日付

require 'date'  

date = Date.today # 日付オブジェクト  
p date.strftime("%Y/%m/%d")  
# => 2020/05/07  

ディレクトリ

カレントディレクトリの取得

日本語のパスになる場合、文字コードを変換したほうがいい

p Dir.pwd  
# => "C:/Users/xxx"  

指定パスにディレクトリが存在するかチェック

if FileTest.directory?(folder_pass)  
    func(folder_pass)  
else  
    puts("フォルダパス #{folder_pass} が正しくありません")  
    raise ArgumentError  
end  

ディレクトリ配下のファイルをすべて検索

  • パスが存在しない場合はループに入らない(エラーも出ない)
  • フォルダの区切り文字は"/(スラッシュ)"
  • "\(円マーク)" だと検索できない
# testフォルダ以下のすべてのファイルを検索  
Dir.glob("#{test}/**/*") do |pass|  
    next if FileTest.directory?(pass)    # ディレクトリは無視  
    puts pass  
end  

ディレクトリ配下のファイル数を数える

ディレクトリはカウントしない

file_num = Dir.glob("#{test}/**/*.*").count  

ファイル

指定パスにファイルが存在するかチェック

if FileTest.file?(file_pass)  
    func(file_pass)  
else  
    puts("ファイルパス #{file_pass} が正しくありません")  
    raise ArgumentError  
end  

ファイルを1行ずつ読み込む

# test.txt はUTF-8 で書かれている  
File.foreach("test.txt", :external_encoding => "UTF-8") do |line|  
    line.chomp!    # 改行削除  
    next if (line == "")    # 空行を無視  

    puts line  
end  

ファイルをコピーする

同名ファイルがある場合は上書きする

require 'fileutils'  

src_pass = "C:/..." # コピー元のパスを指定  
dest_pass = Dir.pwd.encode(Encoding::UTF_8)    # 文字コードを統一する  

# src_pass にあるファイルをカレントディレクトリへコピーする  
FileUtils.copy(src_pass, dest_pass)  

例外

例外の一覧はこちらの「例外クラス」参照
Ruby リファレンスマニュアル: https://docs.ruby-lang.org/ja/latest/library/_builtin.html

例外を発生させる

raise ArgumentError    # 引数エラー  
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

ログにはほぼ自分用とか記事にしては短すぎるものとかを記載

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう