Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.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 - Fatal编程技术网

Ruby 在字符串中循环?

Ruby 在字符串中循环?,ruby,Ruby,最近我一直试图通过转换用Python编写的简单程序来学习Ruby 在Python中,我有一个程序,它定义了一个函数,该函数接受一个字符串并返回一个新字符串,该字符串是旧字符串,每个字符之间有一个破折号 所以,“hello”将作为“-h-e-l-l-o”返回 在Python中,这非常简单,因为您只需循环原始字符串的每个字符,并将其添加到新字符串加上破折号 然而,在Ruby中这似乎更难,因为据我所知,我不能在Ruby中循环一个字符串 做这件事的好方法是什么。。你可以 "hello".chars.ma

最近我一直试图通过转换用Python编写的简单程序来学习Ruby

在Python中,我有一个程序,它定义了一个函数,该函数接受一个字符串并返回一个新字符串,该字符串是旧字符串,每个字符之间有一个破折号

所以,“hello”将作为“-h-e-l-l-o”返回

在Python中,这非常简单,因为您只需循环原始字符串的每个字符,并将其添加到新字符串加上破折号

然而,在Ruby中这似乎更难,因为据我所知,我不能在Ruby中循环一个字符串

做这件事的好方法是什么。。你可以

"hello".chars.map { |c| "-#{c}" }.join
 # => "-h-e-l-l-o"
查看更多Ruby power

string = 'hello'
"-%s" * string.size % string.chars
# => "-h-e-l-l-o"
查找文档中的和。

是。。你可以

"hello".chars.map { |c| "-#{c}" }.join
 # => "-h-e-l-l-o"
查看更多Ruby power

string = 'hello'
"-%s" * string.size % string.chars
# => "-h-e-l-l-o"

查找文档和。

您也可以这样做

"hello".split('').join('-')
嗯,但它没有给你领先的一个。但你明白了

如果你真的需要领先的“-”,你可以这样做

"hello".split('').reduce(''){|s,c| s += '-' + c}
我现在了解到,可以做得更好,如:

"hello".chars.reduce(''){|s,c| s += '-' + c}

你也可以这样做

"hello".split('').join('-')
嗯,但它没有给你领先的一个。但你明白了

如果你真的需要领先的“-”,你可以这样做

"hello".split('').reduce(''){|s,c| s += '-' + c}
我现在了解到,可以做得更好,如:

"hello".chars.reduce(''){|s,c| s += '-' + c}
“通过字符串循环”是什么意思。您可以循环使用字符,因此在Ruby中您可以准确地编写:

'abba'.each_char { |c| puts c }
但你正在努力实现其他目标(你写了其他东西,你的例子是其他东西)。有两种方法可以实现你所说的:

'hello'.chars.join('-')

两者都将返回相同的字符串:
h-e-l-l-o

要实现示例,可以使用regexp:

'hello'.gsub(/(\w)/, '-\1')
或地图

'hellp'.each_char.map { |c| "-#{c}" }.join
但是第二个会稍微慢一点。

什么是“通过字符串循环”。您可以循环使用字符,因此在Ruby中您可以准确地编写:

'abba'.each_char { |c| puts c }
但你正在努力实现其他目标(你写了其他东西,你的例子是其他东西)。有两种方法可以实现你所说的:

'hello'.chars.join('-')

两者都将返回相同的字符串:
h-e-l-l-o

要实现示例,可以使用regexp:

'hello'.gsub(/(\w)/, '-\1')
或地图

'hellp'.each_char.map { |c| "-#{c}" }.join

但是第二个会稍微慢一点。

对于completion,一种不使用显式迭代器的方法:

([''] + s.split('')).join('-')

对于完成,一种不使用显式迭代器的方法:

([''] + s.split('')).join('-')

以下是另一种方式-只是为了好玩:

'-' + 'hello'.chars * '-'
# => "-h-e-l-l-o"

这里我使用它作为字符串数组,通过将每对字符连接到
'-'
。我没有为第一个破折号在数组的开头添加模拟对象,而是选择在数组的开头粘贴一个
'-'

这里是另一种方法-只是为了好玩:

'-' + 'hello'.chars * '-'
# => "-h-e-l-l-o"

这里我使用它作为字符串数组,通过将每对字符连接到
'-'
。我没有为第一个破折号在数组的开头添加模拟对象,而是选择在数组的开头粘贴一个
'-'

看这个
“-h-e-l-l-o”
看这个
“-h-e-l-l-o”
你写了“每个字符之间都有一个破折号”,但你甚至在字符串的开头都有一个破折号(连字符)。哪一个?基本上,我想从旧字符串建立一个新字符串。在python中,我可以使用for循环来循环字符串。Ruby似乎只允许你循环一个数组,所以也许我应该将字符串协调到一个数组中,这似乎很容易做到。你在每个字符之间写了一个破折号,但你甚至在字符串的开头都有一个破折号(连字符)。哪一个?基本上,我想从旧字符串建立一个新字符串。在python中,我可以使用for循环来循环字符串。Ruby似乎只允许您循环一个数组,所以也许我应该将字符串协调到一个数组中,这似乎很容易做到。使用
%
的好技巧。但是,在1.9.3中,
string.chars
返回枚举数。所以
。\u a
可能会有帮助。哇!我希望我永远不必维护您的任何代码:-)@DarekNędza感谢您的宝贵评论。。我使用的是Ruby 2.0和2.1,所以不知道1.9.3:-)使用
%
的好技巧。但是,在1.9.3中,
string.chars
返回枚举数。所以
。\u a
可能会有帮助。哇!我希望我永远不必维护您的任何代码:-)@DarekNędza感谢您的宝贵评论。。我使用Ruby 2.0,2.1,所以不知道1.9.3:-)
'hello'.gsub/,'-\0'
'hello'.gsub/,'-\0'
。好的ol'
*
。现在,不要把它扔出去,告诉OP它是如何工作的。这是教授如何钓鱼的一部分。好的学习方法。现在,不要把它扔出去,告诉OP它是如何工作的。这是教授如何钓鱼的一部分。