Как я могу преобразовать из подчеркивания в случай верблюда с регулярным выражением? - PullRequest
20 голосов
/ 12 марта 2012

Как преобразовать имена с подчеркиванием в имена верблюдов следующим образом, используя одиночное Java / Perl регулярное выражение поиска и замены?

underscore_variable_name -> underscoreVariableName
UNDERSCORE_VARIABLE_NAME -> underscoreVariableName
_LEADING_UNDERSCORE -> leadingUnderscore

Причина, по которой я запрашиваю одинрегулярные выражения - это то, что я хочу сделать, используя поиск и замену Eclipse или Notepad ++.

Ответы [ 3 ]

24 голосов
/ 12 марта 2012

Некоторые примеры Perl :

my $str = 'variable_name, VARIABLE_NAME, _var_x_short,  __variable__name___';

### solution 1
$_ = $str;

$_ = lc;
s/_(\w)/\U$1/g;

say;

### solution 2: multi/leading underscore fix
$_ = $str;

$_ = lc;
s/(?<=[^\W_])_+([^\W_])|_+/\U$1/g;

say;

### solution 3: without prior lc
$_ = $str;

s/(?<=[^\W_])_+([^\W_])|([^\W_]+)|_+/\U$1\L$2/g;

say;

Вывод:

variableName, variableName, VarXShort,  _variable_name__
variableName, variableName, varXShort,  variableName
variableName, variableName, varXShort,  variableName
2 голосов
/ 10 сентября 2013

Прописные буквы после _-:

s/[_-]([a-z])/\u$1/gr
2 голосов
/ 07 июня 2013

Если у вас уже есть переменные camelCase в строке, то ответ @ Qtax сделает их строчными. Если все ваши переменные в нижнем регистре under_scored, вы можете внести следующие изменения в # 3: W -> A-Z

's/(?<=[^\A-Z_])_+([^\A-Z_])|([^\A-Z_]+)|_+/\U$1\L$2/g'
...