Для сегодняшнего короткого алгоритма мы собираемся создать функцию с именем camelcase, которая будет принимать один строковый ввод s.

Нам дана последовательность слов, зажатых вместе без пробелов. За исключением первого слова, во всех последующих словах первая буква каждого слова пишется с заглавной буквы. Этот тип последовательности слов называется верблюжьим регистром. Цель функции - вывести количество слов в строке верблюжьего регистра. Приведем пример:

let s = "oneAppleTwoOrangesThreePineapples"

Наш вход s содержит строку, написанную верблюжьим регистром, но если вы разделите каждое слово:

one Apple Two Oranges Three Pineapples

Всего 6 слов. Функция выведет 6.

Давайте превратим это в код. Записываем наши переменные и их значения:

const re = /[A-Z]/g;
let wordSplit = s.split(re);

Вам, наверное, интересно, что, черт возьми, происходит в первой строке. Это не строка или число, это…. ну это регулярное выражение.

Чтобы упростить задачу, регулярное выражение - это способ сопоставления комбинаций символов в строке с помощью шаблонов. Один из способов создать регулярное выражение - использовать следующий синтаксис: /pattern/flag. Вы пишете свои узоры между косой чертой. Чтобы разбить первый оператор внутри нашей функции:

/[A-Z]/ - регулярное выражение.

[A-Z] - шаблон, который используется для поиска диапазона символов, начинающихся с заглавной буквы A – Z. Для группировки символов в наборе используются скобки. Без скобок наше регулярное выражение будет искать только A, - и Z.

g - это флаг выражения. Флаги выражения изменяют способ интерпретации выражения. Эти флаги всегда идут после закрывающей косой черты после регулярного выражения. Есть несколько флагов выражений, но мы используем g, который является глобальным. Глобальный означает, что он будет находить совпадения во всей строке или тексте, а не останавливаться на самом первом совпадении.

Регулярные выражения - это гораздо больше, чем я объяснил, но для целей этой функции мы будем использовать это для нашей переменной wordSplit.

let wordSplit = s.split(re);

Раньше мы использовали метод разделения, но обычно использовали пустую строку "" в качестве разделителя. Разделитель также может быть регулярным выражением. Используя наше регулярное выражение, мы можем разделить нашу строку в том случае, если есть заглавная буква. Наш wordSplit становится массивом.

Мы хотим вывести только количество слов, которые находятся в строке Camelcase, поэтому мы возвращаем длину нашего массива wordSplit.

return wordSplit.length;

На этом наш код завершен. Вот остальной код:

function camelcase(s) {
  const re = /[A-Z]/g;
  let wordSplit = s.split(re);
  
  return wordSplit.length;
  
}

Вот некоторые из моих других алгоритмов JavaScript, которые вы можете проверить: