質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

5回答

553閲覧

"を文字として取り扱いたい。

pinecone

総合スコア18

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2021/07/10 12:22

'を"に変えたいのですが、なかなかできません。
"を文字として文字列中に含めるには、どうしたらよいでしょうか。

str="'"
p str.gsub(/'/,'"')

結果
"""

最終的には、"を含む文字列としてhtmlファイルを出力したいと思っています。
苦肉の策として"ではなく'で代替してみましたが、
ブラウザが'では認識してくれないようです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2021/07/10 12:32

結果をどのような方法で表示しているかを書いたほうが問題が誤解なく伝わると思います。
pinecone

2021/07/10 14:32

すみません、結果はVSCodeのターミナルで表示しています。
guest

回答5

0

"""

それで、ちゃんと"に置換されています。
文字列をそのまま表示する場合は、pでなくputsを使いましょう。

pは、文字列を文字列リテラルの形式で表示しますので、文字列の前後を"で囲んだ上で、文字列の内部の"\"と表示されます。

最終的には、"を含む文字列としてhtmlファイルを出力したいと思っています。

であれば、場所によっては"でなく"と出力する必要があります。もちろん"のまま出力すべきところもあります。

苦肉の策として"ではなく'で代替してみましたが、ブラウザが'では認識してくれないようです。

それはまた別の勘違いがありそうですね。

投稿2021/07/10 15:41

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pinecone

2021/07/11 02:31

pとputsの違いが理解できました。 ありがとうございます。 今後はputsを主に使っていきたいと思います。 (htmlについては昨日初めて触ったため、他にも基本的な勘違いがいろいろありそうかと思います)
guest

0

p で表示すると、abc"abc" のように " で囲んだ上で文字列中の "\" と表示します。
p のかわりに puts を使ってみれば結果は " と表示されるでしょう。

p "\"" →出力結果 "\""
puts "\"" →出力結果 "

最終的には、"を含む文字列としてhtmlファイルを出力したいと思っています。

" で囲まれた文字列リテラルの中に " を入れるには他の回答のように \" と書いてください。
p を使って表示した際には間違っているように見えても、実際には " になっているはずです。

投稿2021/07/10 14:52

Zuishin

総合スコア28669

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pinecone

2021/07/10 16:29

教えていただいたことで、"を文字列として扱うためにエスケープしようとして失敗したと思っていた理由が分かりました。 (それ以前にpとputsの違いを初めて知りました) 実際にコードをpからputsに変えたら確かに"と表示されました。 ありがとうございます。
guest

0

他にもHTMLで出力するならこんな方法もあります。

" # " ダブルクォート ' # ' シングルクォート & # & アンパサンド

「HTML 特殊記号」で探すと出てきます。

投稿2021/07/10 13:25

Noin

総合スコア188

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pinecone

2021/07/10 16:20

すみません。試してみましたが、書いていただいた方法は「htmlをブラウザで表示する際に、文字として表示する方法」のようです。質問の意図は「rubyで"を文字として変数等に格納する方法」のため、分かりづらくて申し訳ありません。 ただ、教えていただいた方法は、今後必要になりそうな知識だったため、実際に試してみて頭に入れさせていただきました。 ありがとうございました。
pinecone

2021/07/11 06:03

ありがとうございます。 いただいたリンク先を読んでみました。 (20%くらいしか理解していませんが)躓いたときに思い出したいと思います。
guest

0

ベストアンサー

"を文字として文字列中に含めるには、どうしたらよいでしょうか。

エスケープしましょう。

ruby

1p "<p class=\"hoge\">piyo</p>"

投稿2021/07/10 12:32

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pinecone

2021/07/10 16:09

試してみたらできました。ありがとうございます。 どうやら、以前試した時はエスケープのために誤って"/"を使ってしまっていたようです。 助かりました。
Zuishin

2021/07/10 16:11

質問のコードは無関係ということですか? どこから取ってきたものでしょう?
pinecone

2021/07/10 16:24

質問のコードは、"を文字列として扱うためにエスケープしようとして失敗した後に、"の代わりに'を使おうとしてやはり失敗し、それでは'をで"置換しようと思って作成したコードとなります。 maisumakunさんの回答にて、当初の「"を文字列として扱うためにエスケープ」の方法が分かりました。
Zuishin

2021/07/10 16:37

この回答から二時間以上解決しなかったのと、質問のコードで元々正しい結果が出ていたにもかかわらず間違っていると思ったのと、この二点について理由を教えてください。
snowdropAPP

2021/07/11 00:47

二時間以上解決しなかった点に関してはどうでもよくないですか? その人自身に予定などありますしずっとPC張り付きの状態ではないと思いますが、、、
Zuishin

2021/07/11 02:01

23:32 にコメントがあります。
pinecone

2021/07/11 02:27

23:32分にコメントをした際はすべてのコメントを読む前に晩御飯に呼ばれた(妻の精神状態が良くないので、晩御飯が出来上がるのが深夜になることが多々あります)のと、妻が食事が終わるまで退席できないため、また、その後いただいたコメントを読んで調べながら実際に試してみたため、時間が空いてしまいました。申し訳ありません。
pinecone

2021/07/11 02:29

「質問のコードで元々正しい結果が出ていたにもかかわらず間違っていると思った」のは、Zuishinさんに教えていただいたようにp "\"" →出力結果 "\""となり、出力結果 "を期待したため間違っていると思いました。
Zuishin

2021/07/11 02:58

なるほど、理由がわかってスッキリしました。
pinecone

2021/07/11 04:16

お世話をおかけしましたが、今後ともよろしくお願いいたします。
guest

0

chrメソッドで、

ruby

1puts 34.chr."ABC".34.chr

のように取出せます。

投稿2021/07/10 12:29

編集2021/07/10 12:36
seastar3

総合スコア2287

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pinecone

2021/07/10 16:14

試してみたらできました。ありがとうございます。 今後のために頭に入れておきたいと思います。 勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問