[解決済み】Ruby: 複数行の文字列を連結せずに書くことはできますか?
2022-03-24 13:20:05
質問
もう少し見栄えをよくする方法はないでしょうか?
conn.exec 'select attr1, attr2, attr3, attr4, attr5, attr6, attr7 ' +
'from table1, table2, table3, etc, etc, etc, etc, etc, ' +
'where etc etc etc etc etc etc etc etc etc etc etc etc etc'
連結を暗示させるとか?
どのように解決するのですか?
この回答には、私が必要としていたもの(余分な空白のない簡単な複数行の連結)を得るのに役立つ断片がありますが、実際の回答のどれにもそれがなかったので、ここにまとめておきます。
str = 'this is a multi-line string'\
' using implicit concatenation'\
' to prevent spare \n\'s'
=> "this is a multi-line string using implicit concatenation to eliminate spare
\\n's"
おまけに、おかしなHEREDOC構文を使ったバージョンもあります(via. このリンク ):
p <<END_SQL.gsub(/\s+/, " ").strip
SELECT * FROM users
ORDER BY users.id DESC
END_SQL
# >> "SELECT * FROM users ORDER BY users.id DESC"
後者は主に、より柔軟な処理が必要な状況に対応するためでしょう。個人的には、文字列に対して奇妙な場所に処理を置くことになるので好きではありませんが(つまり、文字列の前にありながら、通常はその後に来るインスタンスメソッドを使用する)、それはそれでアリです。もし、最後の
END_SQL
識別子 (これはおそらく関数やモジュールの内部なので一般的です) を使用する場合は、ハイフンを使用した構文 (つまり。
p <<-END_SQL
の代わりに
p <<END_SQL
). そうでない場合は、インデントされた空白により、識別子が文字列の続きとして解釈されます。
これはあまり入力の節約にはなりませんが、私には+記号を使うよりもきれいに見えます。
また、(数年後の編集で言ってますが)Ruby 2.3+を使っている場合、演算子 <<~ は
も利用できます。
これは、最終的な文字列から余分なインデントを削除します。を削除することができるはずです。
.gsub
この場合、開始時のインデントと最終的な必要性の両方に依存するかもしれませんが)。
EDIT:もう一つ追加。
p %{
SELECT * FROM users
ORDER BY users.id DESC
}.gsub(/\s+/, " ").strip
# >> "SELECT * FROM users ORDER BY users.id DESC"
関連
-
[解決済み】Rubyで数値の配列の合計を出すには?
-
[解決済み] Ruby on railsで改行せずにコンソールに "puts "を使用するにはどうすればよいですか?
-
[解決済み] Rubyでランダムな文字列を生成する方法
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Rubyで文字列を小文字・大文字に変換する方法
-
[解決済み] Rubyで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] Rubyで複数行のコメント?
-
[解決済み] Rubyでファイルに書き込むには?
-
[解決済み] RubyでJSON文字列をパースする
-
[解決済み] Rubyで文字列の連結を行う
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Ruby: 特定のバージョンのruby gemをインストールする方法は?
-
[解決済み] Ruby 'require' エラー: そのようなファイルをロードできない
-
[解決済み] 配列に何かを追加しようとしたときに、nil から整数への暗黙の変換が行われない。
-
[解決済み] Ruby on Railsでホスト名やIPを取得する
-
[解決済み] Rubyで配列を平坦化するにはどうしたらいいですか?
-
[解決済み] Rubyの予期しないキーワードの終了、および予期しない入力の終了
-
ERRORの問題を解決します。rails のインストール時に gem ネイティブ拡張のビルドに失敗しました。
-
[解決済み] Ruby 1.8.7 ハッシュを文字列に変換する
-
[解決済み] 配列からランダムに選択する方法は?
-
[解決済み】Rubyで複数行の長い文字列を改行せずに分割する方法