尝试在Ruby中格式化mutliline字符串
heredoc
和%q{ }
存在的问题是它们包含用于格式化代码的空格。
s = %q{Foo
Bar
Baz}
puts s
错误地输出以下内容:
Foo
Bar
Baz
以下作品,但\
字符有点难看。
s = "Foo\n" \
" Bar\n" \
" Baz"
puts s
以下适用于python:
s = ("Foo\n"
" Bar\n"
" Baz")
print s
Ruby中是否有等价物?
答案 0 :(得分:3)
建造得很好但更多的是危险而不是我想的
s = %w{ Foo
Bar
Baz}
puts s
=>
Foo
Bar
Baz
如果你想保留第一行的缩进,这个肯定是按设计建造的
s = <<-END
Foo
Bar
Baz
END
puts s
=>
Foo
Bar
Baz
答案 1 :(得分:2)
您可以随时执行以下操作:
s = ["Foo",
" Bar",
" Baz"].join("\n")
puts s
=>
Foo
Bar
Baz
这样,您可以使用引号来明确划分字符串的开头和结尾,并且缩进的空格不会与字符串混淆。
答案 2 :(得分:2)
我从The Ruby Way偷走了一个技巧:
class String
def heredoc(prefix='|')
gsub /^\s*#{Regexp.quote(prefix)}/m, ''
end
end
s = <<-END.heredoc
|Foo
| Bar
| Baz
END