-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

TITLE_HASH与发布者的模式保持一致,.用“_”替换任何超过一个单词的名称的分隔符。

这种解决方案需要人工维护,但这是因为无法隔离发布者信息;有时是第一个词,有时是前两个词,我敢肯定还有更多的词。

于 2013-01-27T07:30:47.520 回答