Ruby 方法在单独的行上连接字符串
这将产生新行:Ruby 方法在单独的行上连接字符串,ruby,string-literals,Ruby,String Literals,这将产生新行: %(https://api.foursquare.com/v2/venues/search ?ll=80.914207,%2030.328466&radius=200 &v=20161201&m=foursquare&categoryId=4d4b7105d754a06374d81259 &am
%(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或其他工具对其进行正确编码。通过尽可能长时间地将参数保留为数据,而不是编码字符串,您可以更容易地发现错误并在最后一秒对其进行更改。通常您会将类似的内容放在一行,可读性会受到影响,因为替代方案会有问题。无法声明忽略空白的字符串,但可以执行以下操作:
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给出的答案明确地建议了正确的方法;为了多样性,我将发布另一种方法:
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"
@tadman的答案明确地表明了正确的方法;为了多样性,我将发布另一种方法:
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"
仅供参考,这里没有逃逸序列。在此上下文中,反斜杠是一个“行连续字符”。选项1和2都会生成换行符和空格的组合。这三个都会产生一个字符串。如果在第三个示例中使用单引号字符串会怎么样?这样IDE就不会抱怨:DJFYI,这里没有转义序列。在此上下文中,反斜杠是一个“行连续字符”。选项1和2都会生成换行符和空格的组合。这三个都会产生一个字符串。如果在第三个示例中使用单引号字符串会怎么样?这样IDE就不会抱怨了:DWhy没有人提到最明显的方式,即通过
+
的实际连接?无需进一步解释,可接受的开销,适用于大多数语言:耸耸肩:为什么没有人提到最明显的方式,通过+
的实际连接?无需进一步解释,可接受的开销,适用于大多数语言:耸耸肩:在Rails中,helper函数调用\u查询散列),在Rails中,helper函数调用\u查询散列)