-1

現在、次のようになっている書籍コレクション内のすべての書籍のタイトルを ruby​​ に読み取らせたい:

No.Starch.The.Book.of.Ruby.Jun.2011.mobi
No.Starch.The.Book.of.Ruby.Jun.2011.pdf
Oreilly.Graphics.and.Animation.on.iOS.Apr.2011.epub
Oreilly.Graphics.and.Animation.on.iOS.Apr.2011.pdf
Packtpub.Core.Data.iOS.Essentials.Apr.2011.pdf
Pragmatic.iOS.Recipes.Jul.2011.epub

最初にやりたいことは、発行者名を解析することです。ここから始めました:http://rubular.com/r/muioQM1Gsq

しかし、複数の発行元文字列を正確に解析するにはどうすればよいでしょうか? 私は本当に初心者です - 誰か助けてもらえますか?

4

1 に答える 1

4

これは私がそれを行う方法の基本的な例です:

TITLE_HASH = {
  'No.Starch' => 'No_Starch'
}
TITLE_REGEX = /\b(?:#{ Regexp.union(TITLE_HASH.keys).source })\b/i

DATA.each do |fn|
  puts fn.gsub(TITLE_REGEX, TITLE_HASH).split('.').first.tr('_', ' ')
end

__END__
No.Starch.The.Book.of.Ruby.Jun.2011.mobi
No.Starch.The.Book.of.Ruby.Jun.2011.pdf
Oreilly.Graphics.and.Animation.on.iOS.Apr.2011.epub
Oreilly.Graphics.and.Animation.on.iOS.Apr.2011.pdf
Packtpub.Core.Data.iOS.Essentials.Apr.2011.pdf
Pragmatic.iOS.Recipes.Jul.2011.epub

実行時にこれを出力します:

No Starch
No Starch
Oreilly
Oreilly
Packtpub
Pragmatic

発行者のパターンを維持し、 1 語より長い名前のTITLE_HASH区切り記号を「_」に置き換えます。.

このソリューションは手動でメンテナンスする必要がありますが、それは発行元情報を分離する方法がないためです。最初の単語の場合もあれば、最初の 2 つの単語の場合もあります。

于 2013-01-27T07:30:47.520 に答える