如何在ruby代码中将字符串分成两行?有特定的符号吗?
def my_def
path = "//div/p[contains(., 'This is a veeeeeeeryyyyyy looooonggggg string')]"
end
Run Code Online (Sandbox Code Playgroud)
我希望做出类似的事情:
def my_def
path = "//div/p[contains(., 'This is a veeeeeeeryyyyyy
looooonggggg string')]"
end
Run Code Online (Sandbox Code Playgroud)
Ruby将自动连接两个相邻的字符串:
foo = 'a' 'b'
foo # => "ab"
Run Code Online (Sandbox Code Playgroud)
通常,行尾表示分配的结束:
foo = 'a'
'b'
foo # => "a"
Run Code Online (Sandbox Code Playgroud)
所以你不能简单地打破界限并期望Ruby弄清楚要做什么.
\
将该行标记为继续,因此您可以使用:
foo = "a" \
"b"
foo # => "ab"
Run Code Online (Sandbox Code Playgroud)
或者,依赖于+
字符串连接:
foo = 'a' +
'b'
foo # => "ab"
Run Code Online (Sandbox Code Playgroud)
我可能会使用+
它,因为它最常用于连接字符串,所以它的含义非常明显.使用\
导致人们加入非常长的表达而不是打破他们.
如果你的字符串很长,你可以使用其他一些技巧:
foo = [
'foo',
'bar'
].join
foo # => "foobar"
Run Code Online (Sandbox Code Playgroud)
如果要使用空格连接字符串,例如重新组合句子:
foo = [
'foo',
'bar'
].join(' ')
foo # => "foo bar"
Run Code Online (Sandbox Code Playgroud)
要么:
foo = [
'foo',
'bar'
] * ' '
foo # => "foo bar"
Run Code Online (Sandbox Code Playgroud)
在所有这些基础上,我会使用上面的一些组合或简单地类似:
long_str = 'This is a veeeeeeeryyyyyy' +
' looooonggggg string'
path = "//div/p[contains(., '#{ long_str }')]"
Run Code Online (Sandbox Code Playgroud)
要么:
long_str = [
'This is a veeeeeeeryyyyyy',
'looooonggggg string'
].join(' ')
path = "//div/p[contains(., '%s')]" % long_str
Run Code Online (Sandbox Code Playgroud)