Ruby 内置方法来获取字母表系列中字母的位置?

2024-01-02

Input: str = "stackoverflow"

Output: [19 20 1 3 11 15 22 5 18 6 12 15 23]

我们有什么方法可以获取 ruby​​ 中字母的位置吗?

这样我就可以使用类似的东西str.chars.map { |al| al.some_method }.

str.chars = ["s", "t", "a", "c", "k", "o", "v", "e", "r", "f", "l", "o", "w"]


你可以这样做。我会用String#chars它返回字符串中每个字符的 ASCII 数字。

'abcdggg'.bytes
# => [97, 98, 99, 100, 103, 103, 103] 

正如您所看到的,字母表是连续的,每个字母都比前一个字母高一个。您可以通过从数字中取出 96 来获得它在字母表中的位置。

请注意,大写字母位于不同的位置,但我们可以使用以下方法修复此问题String#downcase.

要获取字符串中的所有字母位置(如果它只有字母),我们可以编写此方法。

def alphabet_positions(string)
  string.downcase.bytes.map{|b| b - 96}
end

如果任何字符不是字母,这将出乎意料地起作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby 内置方法来获取字母表系列中字母的位置? 的相关文章

随机推荐