Это из моей коллекции однострочников JavaScript. Однострочники — это элегантный и выразительный способ написания легко понятного и поддерживаемого кода. JavaScript превратился в чрезвычайно выразительный и элегантный язык программирования. Научитесь использовать современные функции языка для достижения своих целей программирования. Это будет приятный и в то же время полезный опыт.

1. Преобразуйте многосегментное имя змеиного регистра в верблюжий регистр.

Я видел много подробных фрагментов JavaScript для преобразования строк в змеином регистре в верблюжий. Например, следующая строка:

SNAKE_casE

должно выглядеть так после преобразования:

snakeCase

Строка case case может состоять из нескольких сегментов, как показано ниже:

SNAKE_casE___WITH_muLtiPLE_SEGments

Приведенная ниже однострочная строка должна работать для любой строки с регистром змеи — даже с несколькими сегментами:

let str = 'SNAKE_casE___WITH_muLtiPLE_SEGments';
'SNAKE_casE___WITH_muLtiPLE_SEGments'.toLowerCase().replace(/_+(.)/g, 
  (m, g1) => {return g1.toUpperCase()}
);

Результат: ’snakeCaseWithMultipleSegments’

Сначала он преобразует всю строку в нижний регистр. Затем сканирует строку на наличие символов подчеркивания, за которыми следует одиночный символ (.), и глобально заменяет эти вхождения символом, следующим за символом подчеркивания, в верхнем регистре. Обратите внимание, что мы передаем функцию в качестве второго аргумента функции replace(). Если вторым аргументом replace() является функция, она может принимать соответствие и группы захвата в качестве аргументов и вернуть значение для замены соответствия. Полное описание смотрите в справке.

2. Сложите длинную строку в длинные строки по 80 символов, не разбивая слова.

Задача здесь состоит в том, чтобы обернуть текст после каждого 80-го символа. Если 80-й символ находится внутри слова, перенос после окончания слова.

Способ 1

const longLine = `This is a long line that needs to be folded \
into lines not more than 80 characters long \
without breaking words.`;

console.log(longLine.replace(/([^\n\r]{80})\s+/g…