26

単一のJava/Perl正規表現検索と置換を使用して、アンダースコア付きの名前を次のようにキャメルケース名に変換するにはどうすればよいですか?

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

単一の正規表現を要求する理由は、EclipseまたはNotepad++の検索と置換を使用してこれを実行したいからです。

4

4 に答える 4

28

いくつかの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
于 2012-03-12T15:35:15.687 に答える
4

_-に続く大文字:

s/[_-]([a-z])/\u$1/gr
于 2013-09-10T12:29:46.497 に答える
2

文字列にすでにキャメルケース変数がある場合、@Qtaxの答えはそれらを小文字にします。すべての変数が小文字のunder_scoredの場合、#3に次の変更を加えることができます。- W>A-Z

's/(?<=[^\A-Z_])_+([^\A-Z_])|([^\A-Z_]+)|_+/\U$1\L$2/g'
于 2013-06-07T15:24:44.370 に答える
1

私はuser846969の答えを好みますが、どういうわけか、EBNF(拡張バッカスナウア記法)を使用しているツールで他の一致を見つけることができませんでした。これが私のために働いた何かです:

/(?:([a-z0-9]*)[_-])([a-z])/${1}${2:/upcase}/g
于 2020-05-13T11:10:20.887 に答える