
以下の様な文字列を
<div>xxx</div>yy<span>zzz</span>
以下の様に編集したいです。
<div>xxx</div>
yy
<span>zzz</span>
htmlのタグ毎に改行を挿入したいのです。
もしも上記例でyyがなければ以下の様に書くのですが、
require 'drb/drb'
puts DATA.read.scan(/(<.+?>.+?<\/.+?>)/).join("\n")
__END__
<div>xxx</div>yy<span>zzz</span>
以上、よろしくご指導の程、お願い申し上げます。
No.2ベストアンサー
- 回答日時:
最近マニュアルを見ていたら、splitでこのようなことができる事に気づきました。
こんなのはどうですか。
puts DATA.read.chomp.split(/(<.+?>.+?<\/.+?>)/).reject{|a| a==""}.join("\n")
もう少し縮めて
puts DATA.read.chomp.split(/(<.+?>.+?<\/.+?>)/).reject{|a| a==""}
もできるみたいです。
もうひとつおまけですが、\を使うのがいやな場合は
puts DATA.read.chomp.split(%r[(<.+?>.+?</.+?>)]).reject{|a| a==""}
のような書き方も
No.1
- 回答日時:
scan部分を
split(/(<.+?>.+?<\/.+?>)/)
にします。()で囲むのがミソです。
この回答への補足
ki073さん、ご回答有り難うございます。
なるほど!! 素晴らしい!! 頭イイ!!
しかし、一行目と最終行に空行が入っちゃいますね。
最終行はchompを加えれば消えますが一行目を消そうと思い、以下の様に書いてみました。
puts DATA.read.chomp.split(/(<.+?>.+?<\/.+?>)/).inject([]){|array,i|
array<<i if i!='';
array
}.join("\n")
なんか、仰々しくなってしまいました。。。 もう少しスマートな方法とかないでしょうか??
ライブラリを使った解でもかまいません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ASP.NETでプレーンなページに文...
-
行頭から全角で3文字位さげた...
-
RubyのHTMLパーサーで複数のタ...
-
VBAでの素数の求め方
-
秀丸で複数行コメントアウトを...
-
htmlの文字が縦書きになる
-
【ヒトの神秘】美男美女から何...
-
特定の見出しのみ前後の空白を...
-
CSSがなぜかfont-sizeだけ効か...
-
含む含まないという概念自体の...
-
htmlのolやulなどlistにtitleや...
-
余分な縦スクロールバーが出て...
-
HTML の繰返し法???
-
aの中にspan
-
<div>と<div>の間の10px程の...
-
widthやheightの数値に単位(px...
-
CSSで、 #hoge と、 div#ho...
-
ポップアップメニューを表のよ...
-
liタグの中に<p>タグやら<dl>を...
-
フレームを使わずに右側だけを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
cnt <= (others => '0'); の意...
-
質問です。 新規登録ボタンが全...
-
pythonでのカーソル移動がずれる
-
Excel VBAでのIE操作でクリック...
-
VBAでの素数の求め方
-
プログラマーの方に質問です。 ...
-
ASP.NETでプレーンなページに文...
-
正規表現
-
VBA : QueryTableでのスクレイ...
-
検索結果がツリー状に表示され...
-
忍者ツールズのカウンタを右寄...
-
Ajaxで文字列を表示したいです。
-
RubyのHTMLパーサーで複数のタ...
-
Dreamweaver8で表を作成したい
-
css リンクの色が全部変わって...
-
htmlの文字が縦書きになる
-
htmlのolやulなどlistにtitleや...
-
含む含まないという概念自体の...
-
複数のボタンを等間隔に、かつ...
-
ボタンをセル内一杯に表示させ...
おすすめ情報