我想在一个词中找到不止一个字母的indices。我不想使用Regexes,因为它们会减慢程序(这已经比我想要的慢了)。
> "banana".indices(("a", "b").any)
any((1 3 5), (0))我怎么才能得到0, 1, 3, 5呢
发布于 2018-05-11 21:32:59
我会这样做(在REPL中):
> gather "banana".indices("a"|"b").deepmap: *.take
(1 3 5 0)发布于 2018-05-12 04:05:49
> "banana".comb.grep: 'a' | 'b',:k
(0 1 3 5)我不知道comb在这种情况下是否使用regex:
gather for 'banana'.comb.antipairs {.value.take if .key ∈ ['a','b'] }
# or
gather 'banana'.comb.antipairs».&{.value.take if .key ∈ ['a','b'] } 发布于 2018-05-11 22:40:42
我的解决办法是:
> <a b>.map( { |"banana".indices($_) } ).sort
(0 1 3 5)基本上,循环您想要查找的所有字母(<a b>.map),并将这些字母映射到它们的索引("banana".indices($_)),然后滑动查找的索引(|)并对结果进行排序(.sort)。
https://stackoverflow.com/questions/50300321
复制相似问题