Я прошел аналогичные записи, но ни один из них не обрабатывал этот конкретный случай. Я хочу преобразовать некоторые старые соглашения об именах в случай, подобный верблюду. Тем не менее, я хочу, преобразование должно быть ограничено только следующее:Регулярное выражение или другой способ преобразования в верблюжий случай в JavaScript
строка (состоящий из алфавитов в любом случае или цифр), а затем подчеркивания сопровождаемого алфавита должен быть заменен той же строки, а затем тот же алфавит, но только тот алфавит в верхнем регистре. Больше ничего.
Некоторые примеры:
aXc9tu_muKxx -> aXc9tuMuKxx
zdmmpFmxf -> zdmmpFmxf //unchanged
_xfefx -> _xfefx //unchanged
Z_9fefx -> Z9fefx //EDITED after getting answers.
Так что, если? в регулярном выражении означало 1 или более случаев, а [] использовался для указания диапазона символов, тогда я бы предположил, что исходное выражение будет: ([0-9a-zA-Z])? _ ([0- 9a-Za-Z])?
Я открыт для использования Javascript или любого инструмента Linux. Повторяю еще раз, что преобразование будет включать только два символа _ и буква, сразу после него, если это действительно письмо. _ Будет удалена, и письмо будет обложено. Если это не буква, а цифра, то только подчеркивание будет удалено.
Цель состоит в том, чтобы двигаться к корпусу верблюда, но поддерживать читаемость старых соглашений об именах, где читаемость может быть скомпрометирована после преобразования. Например, THIS_IS_A_CONSTANT не может быть изменен для THISISACONSTANT.
Это не «жадное» соответствие, это «глобальное» соответствие. –
@LeanAdler. Да, это работает так, как ожидалось. НЕ конвертирует все заглавные буквы, как в MY_CONSTANT_CONFIG, что приятно, хотя и не указано мной. Преобразование сделало бы его нечитаемым. Кроме того, обрабатывает несколько вхождений, как в xx_xAc_atx9. Я принимаю ответ. Можете ли вы немного изменить его, чтобы обрабатывать такие случаи, как xxx_9xxx, где будет удалено только _ _? Я отредактировал мой вопрос, поскольку пример был неправильным. Благодаря! – Sam
@Samir просто добавляет допустимые символы в класс. т.е.: изменить '[az]' на '[a-z0-9]' – Mariano