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

使用ruby将字符串中的单词组合成字谜

使用ruby将字符串中的单词组合成字谜,ruby,regex,split,group-by,Ruby,Regex,Split,Group By,我想制作一个程序,在这个程序中,我能够将字谜中的字符分类并存储到单独的组中。对于字符串的ex: “尖叫汽车四疤痕霜”答案应该是: [["scream", "creams"], ["cars", "scar"], ["for"], ["four"]] 对于以上内容,我使用了以下代码: here = self.split() there = here.group_by { |x| x.downcase.chars.sort}.values 我得到了要求的答案。但当我将代码更改为: here =

我想制作一个程序,在这个程序中,我能够将字谜中的字符分类并存储到单独的组中。对于字符串的ex:

“尖叫汽车四疤痕霜”答案应该是:

[["scream", "creams"], ["cars", "scar"], ["for"], ["four"]] 
对于以上内容,我使用了以下代码:

here = self.split()
there = here.group_by { |x| x.downcase.chars.sort}.values
我得到了要求的答案。但当我将代码更改为:

here = self.split()
there = here.group_by { |x| x.downcase.chars.sort}
我得到了答案:

{["a", "c", "e", "m", "r", "s"]=>["scream", "creams"], ["a", "c", "r", "s"]=>["cars", "scar"], ["f", "o", "r"]=>["for"], ["f", "o", "r", "u"]=>["four"]} 
我想知道为什么现在是这样?我是通过点击试验法得出答案的。

正如叶夫吉尼·安菲洛费耶夫(Yevgeniy Anfilofyev)所评论的那样,这是一种方法,因此也是一种方法

返回一个新数组,该数组由散列中的值填充


然而,如果我们删除方法
,那么我们得到的是整个散列,而不仅仅是
数组

您使用的是group\u,通过它返回的散列可以在这里看到。@Kranthi我想知道为什么要删除“值”将答案从“必需”改为“我最终得到了什么?”,因为您正在使用#chars根据字符对它们进行排序。首先,它对字母进行排序,然后重复检查哪个单词与之匹配,并基于此对单词进行分组。@Rohit,因为
values
是一种方法:返回一个新数组,其中填充了来自hsh的值。(www.ruby-doc.org/core-2.1.4/Hash.html#method-i-values)。当您删除它时,您将得到整个散列,而不是值数组。