如何在ruby语法中将字符串分成两行

and*_*sky 1 ruby string xpath

如何在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)

在此输入图像描述 反斜杠不能正常工作!

the*_*Man 6

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)