rubyで文字列のreplaceの方法について

このQ&Aのポイント
  • rubyで文字列のreplaceの方法についての質問です。文字列の<!-- -->で囲まれた中でハイフンがある場合、ハイフンを-に変更したい方法を教えてください。
  • 質問内容は、rubyで文字列のreplaceの方法についてです。具体的には、<!-- -->で囲まれた中のハイフンを-に変更したいです。
  • 以下はrubyで文字列のreplaceの方法についての質問です。文字列の<!-- -->で囲まれた中でハイフンがある場合、それを-に変更する方法を教えてください。
回答を見る
  • ベストアンサー

rubyで文字列のreplaceの方法について

rubyで文字列のreplaceの方法について いつもお世話になっております。 rubyで分からないことがあります。 ご存知の方がおられましたら、ご教授お願い致します。 【質問】 以下の文字列があるとします。 (文字列) <!-- Advertiser 'XXX', Include user in segment 'test--001' - DO NOT---ANY WAY --> <img src="XXXXXX" alt="test--001" width="1" height="1" /> <!-- End of segment tag --> 文字列の<!-- -->で囲まれた中でハイフンがある場合、ハイフンを-に変更したいです。 (但し、<!--と-->のハイフンは除きます) どのように記述すれば変更出来るのでしょうか? 上記(文字列)ですと <!-- Advertiser 'XXX', Include user in segment 'test--001' - DO NOT---ANY WAY --> <img src="XXXXXX" alt="test--001" width="1" height="1" /> <!-- End of segment tag --> に変更したいです。 以上です。 よろしくお願い致します。

  • Ruby
  • 回答数7
  • ありがとう数11

質問者が選んだベストアンサー

  • ベストアンサー
回答No.7

#2 #3です。 #3でも、うまく記述できなかったので。話がちょっとそれて申し訳ありません。 OKWaveの確認画面で表示される文字列と投稿後に表示される文字列が違うみたいですね。 半角「-」は入力時・確認・投稿後も半角の「-」 半角「&#45;」は入力時・確認はHTMLエスケープした文字列で、投稿後は半角の「-」 半角「&amp;#45;」は入力時・確認は2回HTMLエスケープした文字列で、投稿後は半角の「&amp;#45;」 となってしまいましたね。 OKWaveではどうやって、半角「&#45;」を表示するのか、よく分かりませんが、 半角「&#38;#45;」なのかな? 申し訳ありませんが、ちょっとテスト &#45; これで、半角「&#45;」? いずれにしても、#2で書きたかったのは、以下です。 str ="<!-- Advertiser 'XXX', Include user in segment 'test--001' - DO NOT---ANY WAY -->\n<img src=\"XXXXXX\" alt=\"test--001\" width=\"1\" height=\"1\" />\n<!-- End of segment tag -->" str.gsub(/\<!\-\-(.*?)\-\-\>/) { "<!--" + $1.gsub(/\-/,"&#45;") + "-->" } の&#45;を半角にすれば、半角「-」をHTMLエスケープできると思います。

hanto123
質問者

お礼

ご連絡ありがとうございます。 教えて頂きました内容でプログラムを組んだところ 問題なく動作しました。 ありがとうございました。

その他の回答 (6)

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.6

#5です。 この回答も正しく表示されませんでした。 #5の回答も無視してください。 変更前が、ハイフンを示す特殊記号の&#45;で、 変更後が、ハイフンそのものの-でしょうか? それとも 変更前が、ハイフンそのものの-で、 変更後が、ハイフンを示す特殊記号の&#45;でしょうか?

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.5

#4です。 前の回答は、文字化けして、回答になっていませんでした。 #4の回答は無視してください。 変更前が、ハイフンを示す特殊記号の&amp;#45;で、 変更後が、ハイフンそのものの-でしょうか? それとも 変更前が、ハイフンそのものの-で、 変更後が、ハイフンを示す特殊記号の&amp;#45;でしょうか? それとも、このほかのパターンでしょうか?

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.4

#1です。 >ハイフンをハイフンにしたいです。 額面どおりに受け取ると意味不明です。 それならば、変換する必要はないとおもいますが。 変更前が、ハイフンを示す特殊記号の-で、 変更後が、ハイフンそのものの-でしょうか? それとも 変更前が、ハイフンそのものの-で、 変更後が、ハイフンを示す特殊記号の-でしょうか? それとも、このほかのパターンでしょうか?

回答No.3

#2です。 確認画面で表示される文字列と投稿後に表示される文字列が違うみたいですね。 - は 入力時・確認・投稿後も半角の「-」 - 入力時・確認はHTMLエスケープした文字列で、投稿後は半角の「-」 となりますね。 おそらく、 &amp;#45; 入力時・確認は2回HTMLエスケープした文字列で、HTMLエスケープした文字列 になるかな?投稿してみないと分からないですが。 だとすれば、#2で書きたかったのは、以下です。 str ="<!-- Advertiser 'XXX', Include user in segment 'test--001' - DO NOT---ANY WAY -->\n<img src=\"XXXXXX\" alt=\"test--001\" width=\"1\" height=\"1\" />\n<!-- End of segment tag -->" str.gsub(/\<!\-\-(.*?)\-\-\>/) { "<!--" + $1.gsub(/\-/,"&amp;#45;") + "-->" }

hanto123
質問者

補足

ご連絡ありがとうございます。 これから出張のためご確認が来週になってしまいます。 大変申し訳ございませんが、出張から戻りましたらご確認致します。 ありがとうございます。

回答No.2

str ="<!-- Advertiser 'XXX', Include user in segment 'test--001' - DO NOT---ANY WAY -->\n<img src=\"XXXXXX\" alt=\"test--001\" width=\"1\" height=\"1\" />\n<!-- End of segment tag -->" str.gsub(/\<!\-\-(.*?)\-\-\>/) { "<!--" + $1.gsub(/\-/,"-") + "-->" } では、どうですか? 2回目に出てくるgsubの検索対象(正規表現)と置換後の文字列を用途に合わせて修正してみてください。 もっと、簡潔な書き方があるかも知れません。 正規表現のリファレンス http://doc.okkez.net/static/187/doc/spec=2fregexp.html gsubのリファレンス http://doc.okkez.net/static/187/method/String/i/gsub.html

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

補足要求です。 ハイフンを_(アンダーバー)にしたいのでしょうか? 提示されたサンプルは、ハイフンのままですが・・・・ <!-- Advertiser 'XXX', Include user in segment 'test__001' _ DO NOT___ANY WAY --> <img src="XXXXXX" alt="test__001" width="1" height="1" /> <!-- End of segment tag --> のようにしたいのでしょうか?

hanto123
質問者

補足

ご連絡ありがとうございます。 ハイフンをハイフンにしたいです。 FireFoxで何か条件が一致すると <!-- -->内のハイフンが邪魔をして正しく表示されない模様ですので、 変換をしたいです。 よろしくお願い致します。

関連するQ&A

  • いつもお世話になっております。

    いつもお世話になっております。 rubyで分からないことがあります。 ご存知の方がおられましたら、ご教授お願い致します。 【質問】 以下の文字列があるとします。 (文字列) <!-- Advertiser 'XXX', Include user in segment 'test' - AAA -->\n<img src=\"BBB\" width=\"1\" height=\"1\" />\n<!-- End of segment tag -->\n<!-- Advertiser 'XXX', Exclude user from segment 'test' - AAA -->\n<img src=\"CCC\" width=\"1\" height=\"1\" />\n<!-- End of segment tag --> この文字列を以下の様に変数1、変数2に入れたいのですが、 どのようにプログラムを記述すればよいでしょうか? (変数1の内容) <!-- Advertiser 'XXX', Include user in segment 'test' - AAA -->\n<img src=\"BBB\" width=\"1\" height=\"1\" />\n<!-- End of segment tag --> (変数2の内容) <!-- Advertiser 'XXX', Exclude user from segment 'test' - AAA -->\n<img src=\"CCC\" width=\"1\" height=\"1\" />\n<!-- End of segment tag -->

    • ベストアンサー
    • Ruby
  • XOOPS カスタムブロックに htmlを配列

    始めまして! 初めて投稿させて頂きます。 XOOPSのカスタムブロックにhtmlで表示したいのですが、イメージ通り表示出来ないでおります。 htmlの知識も無い無謀者ですが、どうかご指導の程宜しくお願い致します。 【やりたい事】 ブロックの左側にアイコンに続きtxtを挿入、右側にイメージ画像のアフリエイトを配置したいのですが、表示がイメージ通り出来ません。 添付ファイル画像(1) ・配置したいイメージ 添付ファイル画像(2) ・現状 ・現状のソース <P><Div Align="left"><IMG src="file:///C:/Users/xxx/Desktop/folder858.png" width="24" height="24" border="0">test01<BR></Div> <Div Align="left"><IMG src="file:///C:/Users/xxx/Desktop/folder858.png" width="24" height="24" border="0">test02<BR></Div> <Div Align="left"><IMG src="file:///C:/Users/xxx/xxx/folder858.png" width="24" height="24" border="0">test03<BR></Div> <Div Align="left"><IMG src="file:///C:/Users/xxx/xxx/folder858.png" width="24" height="24" border="0">test04<BR></Div> <Div Align="left"><IMG src="file:///C:/Users/xxx/xxx/folder858.png" width="24" height="24" border="0">test05<BR></Div> <Div Align="left"><IMG src="file:///C:/Users/xxx/xxx/folder858.png" width="24" height="24" border="0">test06<BR></Div> <Div Align="left"><IMG src="file:///C:/Users/xxx/xxx/folder858.png" width="24" height="24" border="0">test07<BR></Div> <Div Align="left"><IMG src="file:///C:/Users/xxx/xxx//folder858.png" width="24" height="24" border="0">test08<BR></Div> <Div Align="right"><script type="text/javascript"><!-- google_ad_client = "pub-xxxxxxxxx"; /* 200x200, 作成済み 09/06/15 */ google_ad_slot = "xxxxxx"; google_ad_width = 200; google_ad_height = 200; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script></Div> ご指導宜しくお願い致します。

  • htmlで文字列の回り込みが上手くできません。

    htmlの勉強を始めた初心者です。 画像の右側に文字を回り込ませようと下記のように入力したのですが、うまくできません。 どこがおかしいのでしょか? アドバイス宜しくお願いします。 <html> <head> <title>xxx</title>  </head> <body> <img src="xxx.jpg" width="145" height="40" align="left"> <h3>~xxxxx~</h3> </body> </html>

    • ベストアンサー
    • HTML
  • 文字列の抽出

    <img src="../photo/e/idx/idx_eizansumire-0404183.jpg" width=90 height=90 border="0"> 上記のような文字列から、下記の部分だけ抽出したいのですが、どうしたらできますか。 抽出する部分以外は、前後とも固定です。 /e/idx/idx_eizansumire-0404183.jpg よろしくお願いします

    • ベストアンサー
    • Perl
  • 助けてください><IE上で1pxのズレ

    こんにちわ。 組んだテーブルに謎の1pxがはいってしまいます。 ファイヤーフォックスでは正常なのですがIEでは1pxの隙間ができてしまうようで。 どなたか分かる方いらっしゃたらお願いします>< <table width="660" border="0" cellpadding="0" cellspacing="0"> <tr> <td colspan="2" valign="top"> <img src="img/test_01.jpg" width="660" height="177" alt=""></td> </tr> <tr><td rowspan="2" valign="top"> <table width="316" border="0" cellpadding="0" cellspacing="0"> <tr> <td colspan="2"> <img src="img/test_02.jpg" width="316" height="46" alt=""></td> </tr> <tr> <td> <img src="img/test_05.jpg" width="144" height="47" alt=""></td> <td> <img src="img/test_06.jpg" width="172" height="47" alt=""></td> </tr> <tr> <td colspan="2"> <img src="img/test_08.jpg" width="316" height="169" alt=""></td> </tr> </table> </td></tr> <tr><td valign="top"> <table width="344" border="0" cellpadding="0" cellspacing="0"> <tr><td> <table width="344" border="0" cellpadding="0" cellspacing="0"> <tr> <td> <img src="img/test_03.jpg" width="181" height="62" alt=""></td> <td> <img src="img/test_04.jpg" width="163" height="62" alt=""></td> </tr> <tr> <td colspan="2"> <img src="img/test_07.jpg" width="344" height="83" alt=""></td> </tr> </table> </td></tr> <tr><td> <table width="344" border="0" cellpadding="0" cellspacing="0"> <tr> <td> <img src="img/test_09.jpg" width="160" height="62" alt=""></td> <td> <img src="img/test_10.jpg" width="184" height="62" alt=""></td> </tr> <tr> <td colspan="2"> <img src="img/test_11.jpg" width="344" height="23" alt=""></td> </tr> <tr> <td> <img src="img/test_12.jpg" width="160" height="32" alt=""></td> <td> <img src="img/test_13.jpg" width="184" height="32" alt=""></td> </tr> </table> </td></tr> </table> </td></tr> <tr><td colspan="2"> <table width="660" border="0" cellpadding="0" cellspacing="0"> <tr> <td colspan="5"> <img src="img/test_14.jpg" width="660" height="141" alt=""></td> </tr> <tr> <td> <img src="img/test_15.jpg" width="130" height="150" alt=""></td> <td> <img src="img/test_16.jpg" width="130" height="150" alt=""></td> <td> <img src="img/test_17.jpg" width="140" height="150" alt=""></td> <td> <img src="img/test_18.jpg" width="130" height="150" alt=""></td> <td> <img src="img/test_19.jpg" width="130" height="150" alt=""></td> </tr> <tr> <td colspan="5"> <img src="img/test_20.jpg" width="660" height="40" alt=""></td> </tr> </table> </td></tr> </table>

  • 正規表現を使いimgタグ内から幅と高さサイズを抜き出し

    正規表現を使いimgタグ内から幅と高さサイズを抜き出し phpにて正規表現を使い html の imgタグ内の width = "xxx" height = "xxx" を各々抜き出しその数字も個別に抜き出したいと思っております。 正規表現で行き詰っており、お知恵を拝借できればと思っております。 説明がわかりづらいかと思いますが、よろしくお願いしたいと思います。 下記のような文字列より <img src="http://test.co.jp/img/test01.jpg" alt="テスト画像です。" title="テスト画像です。" width="361" height="640" class="size-full wp-image-100" /> width="361" height="640" を個別に取りだし さらにその中の数字"361"を取り出したいと思っております。 正規表現に不慣れなので、お知恵をお借りいただけないでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 正規表現で置換

    その1 $str = "ほげほげほげ<a href="http://xxxx.xxxx.xxx/xxxx/">ほげほげほげ</a>ほげほげ<br /><br /><img src="http://yyy.hoge.jp/hage/hige/xxxx.jpg" width="320" height="240" />ほげほげ"; ↓ $str = "ほげほげほげ<a href="http://xxxx.xxxx.xxx/xxxx/">ほげほげほげ</a>ほげほげ<br /><br /><img src="./foo/faa/fii/xxx.jpg" width="320" height="240" />ほげほげ"; その2 $str = "<img src="http://yyy.hoge.jp/hage/hige/xxxx.jpg" width="320" height="240" />ほげほげほげ<a href="http://xxxx.xxxx.xxx/xxxx/">ほげほげほげ</a>ほげほげ<br /><br /><img src="http://yyy.hoge.jp/hage/hige/xxxx.jpg" width="320" height="240" />ほげほげ"; ↓ $str = "<img src="./foo/xxxx.jpg" width="320" height="240" />ほげほげほげ<a href="http://xxxx.xxxx.xxx/xxxx/">ほげほげほげ</a>ほげほげ<br /><br /><img src="./foo/faa/fii/xxx.jpg" width="320" height="240" />ほげほげ"; このような文字列があった時に、次のように従って置換したいです。 1.imgのタグの内部に、「http://yyy.hoge.jp/hage/hige/xxx.jpg」という文字列があった場合、「./foo/faa/fii/xxx.jpg」という文字列に置き換える。 2.それ以外のURLの場合は置換しない。 3.その1とその2では「xxx.jpg」となっていますが、jpg以外の拡張子の場合も存在する。 4.日本語とURLの位置や個数はバラバラです。 5.URLの中のxxxとyyyは不定の文字列で、hage、hoge、hige、foo、faa、fiiは固定です。 6.使用している言語はPHPです。正規表現を1度だけでできれば理想的ですが、今回は2回に渡った処理でも問題ありません。 以上です。正しく処理できる正規表現、あるいは下記の正規表現の誤りを教えて頂ければ幸いです。 お手数ですが、よろしくお願い致します。 下記の方法では、うまくできませんでした。 $pattern = "/http:\/\/.*?hoge.jp\//"; $replacement = "./"; $str= preg_replace($pattern, $replacement, $str); $pattern2 = '/\/?hage\/hoge/'; $str = preg_replace($pattern2, '/foo/faa/fii', $str);

    • ベストアンサー
    • PHP
  • Ruby1.9での文字列操作について。

    Ruby1.9での文字列操作について。 今までRuby1.8を使用していましたが、Ruby1.9に変えてから、次の4種類の問題が出てきました。 (※Ruby1.9に変えてから、#encoding: shift_jisを定義しております) どれか1種類でも結構ですので、Ruby1.9での対策、代替の処理について教えてください。 <問題1> ■文字列を指定のバイト位置まで削除する □現在(Ruby1.8)のコード moji = "1あアあアイ234565789" moji[4,14] = "" →1.8では、"1あア"となりますが、1.9では、"1あアあ"となります。 <問題2> ■文字列の中から指定文字が見つかったバイト位置の算出 □現在(Ruby1.8)のコード n = "あいうえお".index("う") →1.8では、n=4となりますが、1.9では、n=2となります。 <問題3> ■指定した年月日の存在チェック □現在(Ruby1.8)のコード y = 1900 m = 3 d = 10 if Date.exist?(y,m,d) p "test# end →1.8では、trueとなりますが、1.9では実行時にNoMethoodErrorとなります。 <問題4> ■半角英数字→全角英数字変換 □現在(Ruby1.8)のコード sss = moji.tr('a-zA-Z0-9', 'a-zA-Z0-9') →1.9では実行時にエラーメッセージが出力されます(略) 色々と書きましたが、どうかお助けください。

    • ベストアンサー
    • Ruby
  • tableの作成方法について

    よろしくお願いします。 表を以下のように作成しました。 表の横のラインに罫線を引きたいのですが記述方法が分かりません。 表の周りにはcssで記述して2pxの罫線を引いてあります。 どなた様か、ご指導の程よろしくお願いします <table> <tr> <td rowspan="3" class="b"><img src="img/wg.jpg" alt="パソコンノウハウ" width="190" height="250" /></td> <td class="c"><img src="img/txt21.gif" alt="" width="168" height="24" /><br /> </td> </tr> <tr> <td class="d"><img src="img/9.gif" alt="パソコンノウハウ" width="41" height="63" /> <img src="img/ten.gif" alt="パソコンノウハウ" width="21" height="63" /><img src="img/8.gif" alt="パソコンノウハウ" width="41" height="63" /> <img src="img/0.gif" alt="パソコンノウハウ" width="41" height="63" /><img src="img/0.gif" alt="パソコンノウハウ" width="41" height="63" /> <img src="img/en.gif" alt="パソコンノウハウ" width="131" height="63" /></td> </tr> <tr> <td class="e"><a href="http://www."><img src="img/enter_off.gif" alt="" width="349" height="83" /></a></td> </tr> ----------------------------------------------------------------ここに横の罫線を引きたいのですが記述方法が分かりません。 <tr> <td rowspan="3" class="b"><img src="img/wg.jpg" alt="パソコンノウハウ" width="190" height="250" /></td> <td class="c"><img src="img/txt22.gif" alt="" width="103" height="23" /><br /> </td> </tr> <tr> <td class="d"><img src="img/1.gif" alt="パソコンノウハウ" width="41" height="63" /><img src="img/0.gif" alt="パソコンノウハウ" width="41" height="63" /> <img src="img/ten.gif" alt="パソコンノウハウ" width="21" height="63" /><img src="img/8.gif" alt="パソコンノウハウ" width="41" height="63" /> <img src="img/0.gif" alt="パソコンノウハウ" width="41" height="63" /><img src="img/0.gif" alt="パソコンノウハウ" width="41" height="63" /> <img src="img/en.gif" alt="パソコンノウハウ" width="131" height="63" /> </td> </tr> <tr> <td class="e"><a href="http://"><img src="img/enter_off.gif" alt="" width="349" height="83" /></a></td> </tr> </table>

    • ベストアンサー
    • HTML
  • CSSでfloat指定した画像に隙間

    floatの指定をすると並べた画像に隙間ができます。 div aで外を囲み、幅を400px固定し、 その中にli(幅200px)を放り込んでいます。 (幅400pxの入れ物に200pxの小箱を2列に並べていく) 画像をfloatさせなければ隙間は出ないのですが、下記cssのようにfloatさせると幅400pxにIEだけ収まりません。 WinXP・irefox1.0やOpera7.5では意図通り表示されます。。 どなたか解決策お持ちの方よろしくおねがいします。 <html> <head> <title></title> <style type="text/css"> <!-- #a{ width:400px; margin: 0 auto; padding:0; } li{ width:200px; padding:0; list-style:none; float:right; display: inline; } img{ border:none; margin:0; padding:0; vertical-align:top; float:left; ←これの有無で不具合 } --> </style> </head> <body> <div id="a"> <dl> <li> <img src="xxx.jpg" width="150" height="200" /><img src="xxx.jpg" width="50" height="100" /><img src="xxx.jpg" width="50" height="100" /></li> <li> <img src="xxx.jpg" width="150" height="200" /><img src="xxx.jpg" width="50" height="200" /></li> </dl> </body> </html>

    • ベストアンサー
    • HTML

専門家に質問してみよう