Mar*_*lar 6 ruby string multiline
我有多行字符串的空白问题.
我在我的代码中有类似的东西,我正在生成一些SQL.
def generate_sql
<<-EOQ
UPDATE page
SET view_count = 10;
EOQ
end
Run Code Online (Sandbox Code Playgroud)
但是后来我的SQL缩进都搞砸了,我真的不想要.
" UPDATE page\n SET view_count = 10;\n"
Run Code Online (Sandbox Code Playgroud)
我可以
def generate_sql
<<-EOQ
UPDATE page
SET view_count = 10;
EOQ
end
Run Code Online (Sandbox Code Playgroud)
哪个输出正是我想要的
"UPDATE page\n SET view_count = 10;\n"
Run Code Online (Sandbox Code Playgroud)
但是我的代码缩进都搞砸了,我真的不想要.
关于如何最好地实现我的目标的任何建议?
Ruby 2.3.0 用波浪形的 heredoc很好地解决了这个问题。请注意示例之间波浪号/连字符的区别。
hyphen_heredoc = <<-MULTILINE_STRING
One line
Second line
Indented two spaces
MULTILINE_STRING
squiggly_heredoc = <<~MULTILINE_STRING_WITH_TILDE
One line
Second line
Indented two spaces
MULTILINE_STRING_WITH_TILDE
2.3.0 :001 > puts hyphen_heredoc
One line
Second line
Indented two spaces
2.3.0 :002 > puts squiggly_heredoc
One line
Second line
Indented two spaces
Run Code Online (Sandbox Code Playgroud)
使用波浪形的heredoc,将从内容的每一行中删除最小缩进行的缩进。
有这样的图书馆ruby-dedent让你这样做
require 'dedent'
def generate_sql
<<-EOQ.dedent
UPDATE page
SET view_count = 10;
EOQ
end
Run Code Online (Sandbox Code Playgroud)
结果如何
"UPDATE page\n SET view_count = 10;"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2210 次 |
| 最近记录: |