dポイントプレゼントキャンペーン実施中!

こんばんは。

文章の先頭に指定した文字列を指定した箇所(文頭)のみに追加したいと思っているのですが、
どうもうまくいかないため質問させていただきました。


(1)全角英数字を正規表現で取得できていない
(2)unless文の後の条件の複数指定が機能せずエラーになる
(3)sub!で置換する以外に文字の追加方法はないか
(4)unlessで条件指定しない場合、すべての行の頭に「当事業年度」という文字がついてしまう

上記4つがうまくいっていない要因です。

(3)に関してはinsertを他の手段として考えています。


以下プログラムです。

text.each_line do |t|
56
57 case t
58 when/前事業年度\t銘   柄/
59 flag = true
60 when/前事業年度\t当事業年度/
61 flag = false if flag == true
62 end
63
64 t.sub!(/^(\p{Katakana}|[一-龠々]|\w|(株)|\p{Hiragana}|[:upper:]{0,20}[1-9])/) {|d| "前事業年度\t#{$1}"} unless flag == false && /当事業年度/
65 t.sub!(/^(\p{Katakana}|[一-龠々]|\w|(株)|\p{Hiragana}|[:upper:]{0,20}[1-9])/) {|d| "当事業年度\t#{$1}"} unless flag == false && /前事業年度/


変換したい文章は以下のものです。
前事業年度銘   柄株式数(株)貸借対照表計上額(百万円)保有目的
株式会社日本触媒6,338,000株7,726,000,000円当社グループの主要原料供給元であり、取引関係強化の一環として保有している。
ユニ・チャーム株式会社278,100株1,533,000,000円当社グループ製品の販売先であり、取引関係強化の一環として保有している。
栗田工業株式会社572,600株1,282,000,000円当社グループ製品の販売先であり、取引関係強化の一環として保有している。
JXホールディングス株式会社2,477,050株1,231,000,000円当社グループ製品の販売先および主要原料供給元である企業の持株会社であり、取引関係強化の一環として保有している。
KPXChemical158,621株967,000,000円KPXChemical設立時に出資しており、協力関係維持のため保有している。
株式会社ブリヂストン194,000株710,000,000円当社グループ製品の販売先であり、取引関係強化の一環として保有している。
関西ペイント株式会社214,225株315,000,000円当社グループ製品の販売先であり、取引関係強化の一環として保有(取引先持株会による定期買付)している。


当事業年度銘   柄株式数(株)貸借対照表計上額(百万円)保有目的
KPXHoldings58,990株284,000,000円上記KPXChemicalの株式を40%保有する大株主であり、協力関係強化のため保有している。
大日精化工業株式会社524,000株250,000,000円当社グループ製品の販売先であり、取引関係強化の一環として保有している。
高圧ガス工業株式会社424,000株241,000,000円当社グループ製品の販売先であり、取引関係強化の一環として保有している。
サカタインクス株式会社202,000株196,000,000円当社グループ製品の販売先であり、取引関係強化の一環として保有している。地元企業との関係強化のため保有している。
株式会社松風138,000株120,000,000円地元企業との関係強化のため保有している。
コニシ株式会社50,000株91,000,000円当社グループ製品の販売先であり、取引関係強化の一環として保有している。
稲畑産業株式会社66,000株69,000,000円当社グループ製品の販売および原料購入における代理店であり、取引関係強化の一環として保有している。
日本特殊塗料株式会社112,000株68,000,000円当社グループ製品の販売先であり、取引関係強化の一環として保有している。
電気化学工業株式会社142,000株50,000,000円当社グループ製品の販売先であり、取引関係強化の一環として保有している。
株式会社三菱ケミカルホールディングス104,500株44,000,000円当社グループ製品の販売先および主要原料供給元である企業の持株会社であり、取引関係強化の一環として保有している。
長瀬産業株式会社31,000株39,000,000円当社グループ製品の販売および原料購入における代理店であり、取引関係強化の一環として保有している。
横浜ゴム株式会社36,000株34,000,000円当社グループ製品の販売先であり、取引関係強化の一環として保有している。


前事業年度から下の7行の文頭に「前事業年度」という文字を追加し、
当事業年度から下の行の文頭に「当事業年度」という文字を追加することが目標です。

どうかご教授のほどよろしくお願いいたします。

A 回答 (1件)

以下のようにしてください。


---------------------------------------
# ファイル名はsample.htmlとする
data = "./sample.html"
text = File.open(data)
flag = nil
text.each_line do |t|
skip = false
case t
when/前事業年度銘   柄株式数/
flag = true
skip = true
when/当事業年度銘   柄株式数/
flag = false
skip = true
end
if /^\s*$/ =~ t
skip = true
end
if skip == false
if flag == true
t = "前事業年度" + t
end
if flag == false
t = "当事業年度" + t
end
end
#print t
end
----------------------------------------

whenの行は、前事業年度銘□□□柄株式数
としています。(□は全角空白1文字)
もし、実際のファイルに 前事業年度 と 銘□□□柄株式数 の間に タブがある場合は
\t を入れてください。(当事業年度も同様)


考え方は、以下の通りです。
「前事業年度 と 銘□□□柄株式数」を検知したとき、
その行はスキップし、以降の行の先頭に 「前事業年度」を付加する。
但し、全てが空白の行はスキップする。
当事業年度も同様。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!