Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何转换数组输出格式?_Ruby_Regex_Arrays_String - Fatal编程技术网

Ruby 如何转换数组输出格式?

Ruby 如何转换数组输出格式?,ruby,regex,arrays,string,Ruby,Regex,Arrays,String,我自动生成了一个Ruby narray,它的形式是:[x,y],其中x和y是整数 我想将[x,y]转换为这种类型的字符串: "p\.x\.y" 我没有成功地使用正则表达式转换它。正则表达式用于匹配模式,而不是生成字符串 要实现您想要的功能,只需将splat操作符与sprintf一起使用即可: array = [1,2] puts sprintf("p\\.%d\\.%d", *array) 这将以另一种方式输出“p\.1\.2”: x = [1,2] puts "p\\.#{x[0]}\\.

我自动生成了一个Ruby narray,它的形式是:
[x,y]
,其中
x
y
是整数

我想将
[x,y]
转换为这种类型的字符串:

"p\.x\.y"

我没有成功地使用正则表达式转换它。

正则表达式用于匹配模式,而不是生成字符串

要实现您想要的功能,只需将splat操作符与
sprintf
一起使用即可:

array = [1,2]
puts sprintf("p\\.%d\\.%d", *array)
这将以另一种方式输出“p\.1\.2”:

x = [1,2]
puts "p\\.#{x[0]}\\.#{x[1]}" #=> p\.1\2

p是一个固定的字母,它表示任何发生的事情,从一个“p”字符串开始,然后在数组元素上循环添加带有任何修饰的单个元素,例如“\”。正则表达式用于字符串解析,而不是字符串生成。谢谢,最后很明显,我没有注意到我可以这样做,我非常确定我必须使用正则表达式,结果我错了。它更容易使用:
p\.%d\.%d%[1,2]#=>“p\\.1\\.2”
,它也输出为
p\.1\.2
。与其将格式嵌入双引号(强制使用双转义反斜杠),不如使用单引号。