Для сегодняшнего короткого алгоритма мы собираемся создать функцию с именем 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, которые вы можете проверить: