[解決済み] RubyのHEREDOCから先頭の空白文字を削除するにはどうしたらいいですか?
2023-01-18 10:31:51
質問
Rubyのheredocを作成しようとしているのですが、問題があります。それは、私がすべての先行する空白文字を抑制することになっている-演算子を含んでいるにもかかわらず、各行から先行する空白を返しています。私のメソッドは次のようになります。
def distinct_count
<<-EOF
\tSELECT
\t CAST('#{name}' AS VARCHAR(30)) as COLUMN_NAME
\t,COUNT(DISTINCT #{name}) AS DISTINCT_COUNT
\tFROM #{table.call}
EOF
end
で、出力はこんな感じです。
=> " \tSELECT\n \t CAST('SRC_ACCT_NUM' AS VARCHAR(30)) as
COLUMN_NAME\n \t,COUNT(DISTINCT SRC_ACCT_NUM) AS DISTINCT_COUNT\n
\tFROM UD461.MGMT_REPORT_HNB\n"
これは、もちろん、最初の " と \t の間のすべてのスペースを除いて、この特定のインスタンスでは正しいです。
どのように解決するのですか?
この
<<-
の形式は、終了区切り文字の先頭の空白を無視するだけです。
Ruby 2.3 以降では、スクイグリー(squiggly)なheredoc(
<<~
) を使って、コンテンツ行の先頭の空白を抑制することができます。
def test
<<~END
First content line.
Two spaces here.
No space here.
END
end
test
# => "First content line.\n Two spaces here.\nNo space here.\n"
Rubyから リテラルのドキュメント :
コンテンツの各行から、最もインデントされていない行のインデントが削除されます。 行から削除されます。空白行やタブとスペースだけで構成される行は 空行、およびタブとスペースだけで構成される行は、インデントを決定する目的では無視されます。 しかし,エスケープされたタブとスペースは,インデントされない文字とみなされる。 はインデントされない文字とみなされます。
関連
-
[解決済み】Ruby: 特定のバージョンのruby gemをインストールする方法は?
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Rubyで配列に値が存在するかどうかを確認する方法
-
[解決済み] Rubyからシェルコマンドを呼び出す方法
-
[解決済み] Rubyでnilとemptyとblankを理解する方法
-
[解決済み] 空白文字を削除するにはどうすればよいですか?
-
[解決済み] Bashスクリプトでファイルへのheredocを書き込むには?
-
[解決済み] 任意の空白文字をデリミタとして文字列を分割する方法
-
[解決済み] Rubyのsend()は何をするのですか?
-
[解決済み] 既存の文字列に追加する
最新
-
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オプションのパラメータ
-
[解決済み] Rubyでモジュール変数を作成する
-
[解決済み] インストールされているすべてのGemsを削除して最初からやり直す
-
[解決済み] ルビー 負の数を正の数に変換する?
-
[解決済み] Rubyのオフ・ザ・レール
-
[解決済み] メソッドから2つ以上の値を返す
-
[解決済み] ルビー、!オペレーター(a/k/a ダブルバン)[重複]|日本郵船
-
[解決済み] Rubyで、selectとmapを組み合わせたArrayメソッドはありますか?
-
[解決済み] WindowsへのRubyGemsのインストール