- ベストアンサー
rubyで文字列のreplaceの方法について
- rubyで文字列のreplaceの方法についての質問です。文字列の<!-- -->で囲まれた中でハイフンがある場合、ハイフンを-に変更したい方法を教えてください。
- 質問内容は、rubyで文字列のreplaceの方法についてです。具体的には、<!-- -->で囲まれた中のハイフンを-に変更したいです。
- 以下はrubyで文字列のreplaceの方法についての質問です。文字列の<!-- -->で囲まれた中でハイフンがある場合、それを-に変更する方法を教えてください。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
#2 #3です。 #3でも、うまく記述できなかったので。話がちょっとそれて申し訳ありません。 OKWaveの確認画面で表示される文字列と投稿後に表示される文字列が違うみたいですね。 半角「-」は入力時・確認・投稿後も半角の「-」 半角「&#45;」は入力時・確認はHTMLエスケープした文字列で、投稿後は半角の「-」 半角「&amp;#45;」は入力時・確認は2回HTMLエスケープした文字列で、投稿後は半角の「&amp;#45;」 となってしまいましたね。 OKWaveではどうやって、半角「&#45;」を表示するのか、よく分かりませんが、 半角「&#38;#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エスケープできると思います。
その他の回答 (6)
- tatsu99
- ベストアンサー率52% (391/751)
#5です。 この回答も正しく表示されませんでした。 #5の回答も無視してください。 変更前が、ハイフンを示す特殊記号の-で、 変更後が、ハイフンそのものの-でしょうか? それとも 変更前が、ハイフンそのものの-で、 変更後が、ハイフンを示す特殊記号の-でしょうか?
- tatsu99
- ベストアンサー率52% (391/751)
#4です。 前の回答は、文字化けして、回答になっていませんでした。 #4の回答は無視してください。 変更前が、ハイフンを示す特殊記号の&#45;で、 変更後が、ハイフンそのものの-でしょうか? それとも 変更前が、ハイフンそのものの-で、 変更後が、ハイフンを示す特殊記号の&#45;でしょうか? それとも、このほかのパターンでしょうか?
- tatsu99
- ベストアンサー率52% (391/751)
#1です。 >ハイフンをハイフンにしたいです。 額面どおりに受け取ると意味不明です。 それならば、変換する必要はないとおもいますが。 変更前が、ハイフンを示す特殊記号の-で、 変更後が、ハイフンそのものの-でしょうか? それとも 変更前が、ハイフンそのものの-で、 変更後が、ハイフンを示す特殊記号の-でしょうか? それとも、このほかのパターンでしょうか?
- kanemoto_s
- ベストアンサー率45% (112/244)
#2です。 確認画面で表示される文字列と投稿後に表示される文字列が違うみたいですね。 - は 入力時・確認・投稿後も半角の「-」 - 入力時・確認はHTMLエスケープした文字列で、投稿後は半角の「-」 となりますね。 おそらく、 &#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(/\-/,"&#45;") + "-->" }
補足
ご連絡ありがとうございます。 これから出張のためご確認が来週になってしまいます。 大変申し訳ございませんが、出張から戻りましたらご確認致します。 ありがとうございます。
- kanemoto_s
- ベストアンサー率45% (112/244)
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)
補足要求です。 ハイフンを_(アンダーバー)にしたいのでしょうか? 提示されたサンプルは、ハイフンのままですが・・・・ <!-- 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 --> のようにしたいのでしょうか?
補足
ご連絡ありがとうございます。 ハイフンをハイフンにしたいです。 FireFoxで何か条件が一致すると <!-- -->内のハイフンが邪魔をして正しく表示されない模様ですので、 変換をしたいです。 よろしくお願い致します。
お礼
ご連絡ありがとうございます。 教えて頂きました内容でプログラムを組んだところ 問題なく動作しました。 ありがとうございました。