Подтвердить что ты не робот

Параметры подсчета строк #

В документации для String#count я понимаю первый пример, но я не понимаю остальных примеров:

a = "hello world"
a.count "lo"            #=> 5
a.count "lo", "o"       #=> 2
a.count "hello", "^l"   #=> 4
a.count "ej-m"          #=> 4

Любое объяснение будет полезно.

4b9b3361

Ответ 1

Это один из самых удобных рубиновых методов, и очень грубая документация для загрузки. Бросил меня за петлю. Я закончил тем, что посмотрел на него, потому что он выглядел так, как будто он должен подсчитывать количество вхождений данной строки. Неа. Не удаленно закрыть. Но вот как я закончил подсчет строк:

s="this is a string with is thrice"
s.scan(/is/).count  # => 3

Заставляет меня задаться вопросом, почему кто-то попросил этот метод, и почему документация настолько отвратительна. Почти как человек, документирующий код, действительно не имел понятия о понятной для бизнеса "деловой" причине для запроса этой функции.

count([other_str]+) → fixnum

Каждый параметр _other_str_ определяет набор символов для подсчета. пересечение этих множеств определяет символы для подсчета на str. Любые _other_str_, начинающийся с каретки (^), отрицается. Последовательность c1–c2означает все символы между c1 и c2.

Ответ 2

Если вы перечислите более одного параметра для подсчета, он будет использовать пересечение этих строк и будет использовать это как цель поиска:

a = "hello world"
a.count "lo"            #=> finds 5 instances of either "l" or "o"
a.count "lo", "o"       #=> the intersection of "lo" and "o" is "o", so it finds 2 instances
a.count "hello", "^l"   #=> the intersection of "hello" and "everything that is not "l" finds 4 instances of either "h", "e" or "o"
a.count "ej-m"          #=> finds 4 instances of "e", "j", "k", "l" or "m" (the "j-m" part)

Ответ 3

Позвольте сломать их вниз

a = "hello world"
  • чтобы подсчитать количество вхождений букв l и o

    a.count "lo" #=> 5

  • чтобы найти пересечение lo и o (которое подсчитывает количество вхождений l и o и принимает только количество o из вхождений):

    a.count "lo", "o" #=> 2

  • чтобы подсчитать количество вхождений h, e, l, l и o, затем пересечься с любым, не являющимся l (что дает тот же результат нахождение вхождения h, e и o)

    a.count "hello", "^l" #=> 4

  • чтобы подсчитать количество вхождений e и любую букву между j и m (j, k, l и m):

    a.count "ej-m" #=> 4

Ответ 4

Каждый аргумент определяет набор символов. Пересечение этих наборов определяет общий набор, который count использует для вычисления подсчета.

a = "hello world"

a.count "lo"            # l o       => 5
a.count "lo", "o"       # o         => 2

И ^ может использоваться для отрицания (все буквы в hello, кроме l)

a.count "hello", "^l"   # h e o     => 4

Диапазоны могут быть определены с помощью -:

a.count "ej-m"          # e j k l m => 4

Ответ 5

Я возьму удар:

Второй пример: с использованием формулировки "Пересечение этих множеств определяет символы для подсчета в str", параметры "lo" и "o". Их пересечение - это "o", из которых в строке подсчитываются 2. Следовательно, возвращаемое значение 2.

Третий пример: Кажется, это говорит: "Любой из символов" привет ", но не символ" l ". Получение этого из строки" Any other_str, начинающийся с каретки (^), сбрасывается ". Итак, вы можете посчитать множество букв, содержащихся в строке" hello ", которые находятся в" hello world" (т.е. H, e, l, l, o, o, l), но затем сравнивая пересечение с множеством "^l" (т.е. h, e, o, w, o, r, d) вы остаетесь с 4 (т.е. h, e, o, o).

Четвертый пример: в основном он говорит: "Считайте все символы" e "и любой символ между" j "и" m ". Существует один" e "и 3 символа между" j "и" m "и все 3 - это буква" l", которая снова дает нам ответ 4.