single Java/Perl正規表現の検索と置換を使用して、アンダースコア付きの名前を次のようにキャメルケース名に変換するにはどうすればよいですか?
underscore_variable_name -> underscoreVariableName
UNDERSCORE_VARIABLE_NAME -> underscoreVariableName
_LEADING_UNDERSCORE -> leadingUnderscore
単一の正規表現を要求する理由は、EclipseまたはNotepad ++の検索と置換を使用してこれを実行したいからです。
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
_-に続く大文字:
s/[_-]([a-z])/\u$1/gr
文字列にすでにキャメルケース変数がある場合、@ Qtaxの答えはそれらを小文字にします。すべての変数が小文字のunder_scoredの場合、#3に次の変更を加えることができます。W
-> A-Z
's/(?<=[^\A-Z_])_+([^\A-Z_])|([^\A-Z_]+)|_+/\U$1\L$2/g'