Преобразование различных строк в snake_case в Javascript - PullRequest
0 голосов
/ 24 октября 2018

Я знаю, что у нас есть вопрос, похожий на этот, но не совсем тот же.Я пытаюсь заставить мою функцию работать, которая принимает строку в качестве аргумента и преобразует ее в snake_case.Он работает большую часть времени со всеми причудливыми !?<>= символами, но есть один случай, когда он не может конвертировать и его camelCase.

Не удается, когда я передаю такие строки, как snakeCase.Он возвращает snakecase вместо snake_case.

Я пытался реализовать его, но в итоге я просто запутал его еще больше ..

Можно мне помочь, пожалуйста?

мой код:

const snakeCase = string => {
    string = string.replace(/\W+/g, " ").toLowerCase().split(' ').join('_');

    if (string.charAt(string.length - 1) === '_') {
        return string.substring(0, string.length - 1);
    }

    return string;
}

1 Ответ

0 голосов
/ 24 октября 2018

Вы должны быть в состоянии обнаружить точки, в которых заглавная буква находится в строке после другой буквы (то есть, не после пробела).Вы можете сделать это с помощью регулярного выражения, перед , когда вы вызываете toLowerCase для входной строки:

\B(?=[A-Z])

Другими словами, граница не из слов, за которой следует верхний регистрперсонаж.Разбейте либо на вышеприведенное, либо на буквальное пространство: , затем .map, получившийся массив в нижний регистр, и затем вы можете присоединиться с помощью подчеркивания:

const snakeCase = string => {
    return string.replace(/\W+/g, " ")
      .split(/ |\B(?=[A-Z])/)
      .map(word => word.toLowerCase())
      .join('_');
};

console.log(snakeCase('snakeCase'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...