在Ruby中,从数组中组合两个字符串而不重复它们的一种优雅方法是什么? 例:

array = ['one', 'two', 'three', 'four']

我希望我的输出是:

['onetwo', 'onethree', 'onefour', 'twothree', 'twofour', 'threefour']

看起来很简单,但是我很困惑!

编辑:这是用字谜做的事情,所以顺序无关紧要。 (“ onetwo”最终等同于“ twoone”。)

===============>>#1 票数:3 已采纳

您可以为此使用Arrary#combinationEnumerable#mapArray#join

array.combination(2).map(&:join)
  #=> ["onetwo", "onethree", "onefour", "twothree", "twofour", "threefour"]

说明

array = ['one', 'two', 'three', 'four']

a = array.combination(2)
  #=> #<Enumerator: ["one", "two", "three", "four"]:combination(2)>

要查看枚举器的内容:

a.to_a
  #=> [["one", "two"  ], ["one", "three"], ["one"  , "four"],
  #    ["two", "three"], ["two", "four" ], ["three", "four"]]

然后

a.map(&:join)

具有与以下相同的效果:

a.map { |e| e.join }
  #=> ["onetwo", "onethree", "onefour", "twothree", "twofour", "threefour"]

如果"twoone""twoone"又要"onetwo" ,请使用Array#permutation而不是combination

array.permutation(2).map(&:join)
  #=> ["onetwo"  , "onethree", "onefour"  , "twoone" , "twothree", "twofour",
  #    "threeone", "threetwo", "threefour", "fourone", "fourtwo" , "fourthree"]

  ask by user3060126 translate from so

未解决问题?本站智能推荐:

1回复

如何在不使用eval的情况下将字符串转换为ruby / rails中的哈希? [重复]

这个问题在这里已有答案: 如何将String对象转换为Hash对象? 12个答案 这是需要转换为hash的string 。 我们不能使用eval因为eval将在字符串中执行return_misc_definitions('project_status')方
4回复

如何在ruby中得到一个字符串数组的总和

我有一个十进制数组作为字符串,我需要得到数组的总和,我已经尝试迭代数组并将每个数字更改为浮点数,但每次只返回一个整数,我需要总和为小数。 我应该将字符串更改为哪种数据类型,以及获取数组总和的最佳方法将会有所帮助。
3回复

Ruby中是否有一种标准方法可以在字符串数组的每个字符串前面添加和/或附加一个字符串? [重复]

这个问题已经在这里有了答案: 在Ruby中迭代数组时如何修改数组? 3个答案 Ruby中是否有一种标准方法可以在字符串数组的每个字符串前面添加和/或附加一个字符串? 导致[ 'Mr. john', 'Mr. dave', 'Mr. joe' ] [ 'Mr
3回复

Ruby将数组合并为一个字符串

在Ruby中有没有办法将所有数组元素组合成一个字符串? 示例数组: 示例输出:
2回复

如何在Ruby中将2个字符串数组交织成一个字符串?

给定2个相同大小的字符串数组,例如: 你会如何将它们交错成一个字符串,即: ?
6回复

如何在Ruby中附加一个字符串

我想在这个字符串的末尾添加一个'/'。 做这个的最好方式是什么? 我想制作params[:id] == "shirts/" 。 如何在该字符串的末尾添加/ ?
3回复

在Ruby中,如何在给定要拆分字符串的索引数组的情况下拆分字符串?

我有这个表达式来获取给定字符串中的空格索引…… 我想要做的是获取上述表达式返回的索引,并使用它们来分解这些索引上的其他字符串。 因此,例如,如果以上包含 [3,6,10] 我有绳子 abcdefghijklmnopqrs 然后,我想获取索引,使用它们分解上面的字
1回复

如何在Ruby中仅使用字符串的前5个字符对数组进行排序?

因此,假设我有一个字符串数组,例如:[“ 74712 Don”,“ 48342 Cindy”,“ 50912 Nick”],我想按名称前面的数字对它们进行排序。 如何仅按每个元素的前5个字符进行排序(同时还将它们评估为数字)? 谢谢
1回复

Ruby的字符串是否与字符串数组中的一个字符串相等?

是否有一种简单的方法可以在查询中调用与数据库类似的东西? “mystring”中是否存在[“string1”,“mystring”,“string2”] =>将返回true 在[“string1”,“string2”,“string3”] =>中是否存在“mystring
3回复

如何在Ruby中的子字符串后删除某个字符

我有一个带有感叹号的字符串。 我想删除单词末尾的感叹号,而不是单词前的感叹号。 假设本身没有感叹号/没有单词附带。 我的意思是[a..z],可以大写。 例如: 我已经阅读了如何使用Ruby删除字符串中某个字符之后的子字符串? ; 这两个是接近的,但不同。 我也尝试