gpt4 book ai didi

arrays - Ruby:从字符串数组的每个元素中获取字符[n],严格使用数组表示法

转载 作者:数据小太阳 更新时间:2023-10-29 08:21:51 26 4
gpt4 key购买 nike

假设我有这个:

x = %w(greater yellow bandicooot)

而且我想获取每个字符串的特定字母作为字符串。当然,我可以这样做(获取第一个字母):

x.map { |w| w[0] }.join  # => 'gyb'

但我想知道是否有一种方法可以仅使用数组表示法来完成。我试过这个:

x[0][0]..x[-1][0]

在这种情况下,它返回不太有用的 "g".."b"。在这种情况下,我也可以使用这样的数组表示法:

x[0][0] + x[1][0] + x[2][0]

但我正在寻找不需要迭代的非特定案例解决方案。

有没有一种方法可以严格地使用数组符号来做到这一点,或者是否有必要进行某种迭代?如果你不能用数组表示法做到这一点,有没有比使用 mapjoin 更好的方法呢?

最佳答案

如果您将单词组合在一个以空格分隔的字符串中,这是一种奇特的正则表达式方法:

string = "greater yellow bandicooot"
string.gsub /([^ ])[^ ]* */, '\1'
# => "gyb"

正则表达式的解释:

  • ([^ ]):匹配组 - 单个非空格字符
  • [^ ]* *:可选的非空格字符序列,后跟任意可选的空格字符序列。

您可以在此处阅读:Ruby regex - gsub only captured group ,当使用 gsub 时,整个正则表达式中的所有内容都会被替换,无论它是否在匹配组中。所以你需要在 gsub 调用中使用特殊变量 \1 (顺便说一下,必须在单引号字符串中)来引用第一个匹配组,即你想用作输出。

关于arrays - Ruby:从字符串数组的每个元素中获取字符[n],严格使用数组表示法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55150658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com