※この記事は 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