如何在ruby代码中将字符串分成两行? 有特定的符号吗?
def my_def
path = "//div/p[contains(., 'This is a veeeeeeeryyyyyy looooonggggg string')]"
end
我希望做出类似的事情:
def my_def
path = "//div/p[contains(., 'This is a veeeeeeeryyyyyy
looooonggggg string')]"
end
答案 0 :(得分:5)
Ruby会自动连接两个相邻的字符串:
foo = 'a' 'b'
foo # => "ab"
通常,行尾表示作业的结束:
foo = 'a'
'b'
foo # => "a"
所以你不能简单地打破界限并期望Ruby找出要做的事情。
\
标记该行为继续,因此您可以使用:
foo = "a" \
"b"
foo # => "ab"
或者,依赖+
字符串连接:
foo = 'a' +
'b'
foo # => "ab"
我可能会使用+
,因为它最常用于连接字符串,所以它的含义非常明显。使用\
会导致人们加入非常长的表达式,而不是将其分解。
如果你的字符串真的很长,你可以使用其他一些技巧:
foo = [
'foo',
'bar'
].join
foo # => "foobar"
如果要使用空格连接字符串,例如重新组合句子:
foo = [
'foo',
'bar'
].join(' ')
foo # => "foo bar"
或:
foo = [
'foo',
'bar'
] * ' '
foo # => "foo bar"
在所有这些基础上,我会使用上面的一些组合或仅仅是:
long_str = 'This is a veeeeeeeryyyyyy' +
' looooonggggg string'
path = "//div/p[contains(., '#{ long_str }')]"
或:
long_str = [
'This is a veeeeeeeryyyyyy',
'looooonggggg string'
].join(' ')
path = "//div/p[contains(., '%s')]" % long_str
答案 1 :(得分:3)
您可以使用反斜杠指示字符串在下一行继续,如下所示:
str = "this is a long \
string"
print str # => this is a long string
如果你的字符串变得太大,那么在这里使用docs可能是个好主意。它们允许您在代码中间编写文本片段:
str = <<HEREDOC
This is my string :)
Let's imbue code in the imbued doc: #{[4, 2, 3, 1].sort}
HEREDOC
print str
# => This is my string :)
# => Let's imbue code in the imbued doc: [1, 2, 3, 4]
HEREDOC
可以是您想要的任何名称。您可以详细了解here docs here。