加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby 2.2.1 – string.each_char没有为重复出现的字母提供唯一索

发布时间:2020-12-17 01:50:54 所属栏目:百科 来源:网络整理
导读:我对each_char的行为感到困惑,我正在尝试遍历一个字符串并为该字符串中的每个字符获取唯一的特定索引. Ruby似乎不会迭代每个离散字符,而只是填充字符串的任何给定字符的一个副本. def test(string) string.each_char do |char| puts string.index(char) ende
我对each_char的行为感到困惑,我正在尝试遍历一个字符串并为该字符串中的每个字符获取唯一的特定索引. Ruby似乎不会迭代每个离散字符,而只是填充字符串的任何给定字符的一个副本.

def test(string)
  string.each_char do |char|
    puts string.index(char)
  end
end

test("hello")
test("aaaaa")

产生结果:

2.2.1 :007 >   test("hello")
0
1
2
2
4

2.2.1 :008 > test("aaaaa")
0
0
0
0
0

这似乎与其他语境中的#each的一般形式相反.我希望“aaaaa”的索引为0,1,2,3,4 – 我怎样才能实现这种行为?

我查看了String的官方文档,它似乎没有包含一个行为方式的方法.

解决方法

.each_char给你的字符串中的每个“a”.但是每个“a”都是相同的 – 当你正在寻找一个“a”时,.index会给你找到它的第一个,因为它不知道你给它,比如第三个.

这样做的方法不是获取char然后找到它的索引(因为你不能,如上所述),而是获得索引以及char.

def test(string)
  string.each_char.with_index do |char,index|
    puts "#{char}: #{index}"
  end
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读