LoginSignup
0
0

More than 3 years have passed since last update.

Rubyチートシート(一部)

Last updated at Posted at 2019-12-19

※この記事は https://kunosu.qrunch.io/entries/LaeGAOAE0Ijc9CzH に移動しました。


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

実行時の引数を取得

# 引数の数が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+)>/, "")

ディレクトリ

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

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

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

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

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

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

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

ファイル

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

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

    puts line
end

例外

例外を発生させる

raise ArgumentError
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0