Posted at

ファイルに含まれる日本語文字数をカウント

More than 5 years have passed since last update.

エンコーディングが複数種類あってもそれなりに対応

count = 0

japanese_char = /(?:\p{Hiragana}|\p{Katakana}|[一-龠々])/
# ファイルの指定
targets = Dir.glob(TARGET_FILES)
# このエンコーディング以外はとばす
target_encodings = %w(UTF-8 Shift_JIS CP932)

targets.each{|t|
encoding = %x(nkf -g #{t}).chomp
if target_encodings.include? encoding
f = File.open(t,"r",encoding: encoding)
while line = f.gets
count += line.scan(Regexp.new(japanese_char.to_s.encode(encoding))).length
end
f.close
else
puts "#{t}: #{encoding}"
end
}

puts "合計: #{count}文字"