在单独的行上连接字符串的方法

Methods to concatenate strings on separate lines

这会产生换行符:

%(https://api.foursquare.com/v2/venues/search
                          ?ll=80.914207,%2030.328466&radius=200
                          &v=20161201&m=foursquare&categoryId=4d4b7105d754a06374d81259
                          &intent=browse)

这会产生空格:

"https://api.foursquare.com/v2/venues/search
 ?ll=80.914207,%2030.328466&radius=200
 &v=20161201&m=foursquare&categoryId=4d4b7105d754a06374d81259
 &intent=browse"

这会产生一个字符串:

"https://api.foursquare.com/v2/venues/search"\
"?ll=80.914207,%2030.328466&radius=200"\
"&v=20161201&m=foursquare&categoryId=4d4b7105d754a06374d81259"\
"&intent=browse"

当我想将一个字符串分成多行以便在屏幕上更好地阅读时,是否首选使用转义符?

我的 IDE 抱怨我应该使用单引号字符串而不是双引号字符串,因为没有插值。

通常你会把这样的东西放在一行上,可读性该死,因为替代方案会有问题。没有办法声明忽略空格的字符串,但您可以这样做:

url = %w[ https://api.foursquare.com/v2/venues/search
  ?ll=80.914207,%2030.328466&radius=200
  &v=20161201&m=foursquare&categoryId=4d4b7105d754a06374d81259
  &intent=browse
].join

您明确删除空格的位置。

我实际上建议通过正确编写这个 URI 来避免这整个混乱:

uri = url("https://api.foursquare.com/v2/venues/search",
  ll: [ 80.914207,30.328466 ],
  radius: 200,
  v: 20161201,
  m: 'foursquare',
  categoryId: '4d4b7105d754a06374d81259',
  intent: 'browse'
)

你有某种辅助函数,可以使用 URI 或其他工具正确编码。通过尽可能长时间地将参数保留为数据而不是编码字符串,您可以更轻松地发现错误以及对它们进行最后一秒的更改。

@tadman 的回答明确提出了正确的方法;为了多样性,我将 post 另一种方法:

query = "https://api.foursquare.com/v2/venues/search"
        "?ll=80.914207,%2030.328466&radius=200"
        "&v=20161201&m=foursquare&categoryId=4d4b7105d754a06374d81259"
        "&intent=browse"

是的,没有任何可见的串联,4 个字符串在引号中一个接一个地排成一行。此示例在 irb/pry 中不起作用(由于它是 REPL 的性质,)但上面是 最有效的 连接字符串的方法 ruby 没有产生任何中间结果。


pry/irb 中测试的人为示例:

value = "a" "b" "c" "d"