1. ホーム
  2. javascript

[解決済み] JavascriptでPascalCaseをUnderscore_case/Snake_caseに変換する。

2023-06-02 16:37:06

質問

どのようにすれば PascalCase という文字列を underscore_case/snake_case の文字列に変換できますか?ドットをアンダースコアに変換する必要があります。

を変換します。

TypeOfData.AlphaBeta

type_of_data_alpha_beta

どのように解決するのですか?

以下の手順を試してみてください。

  • すべての大文字をキャプチャし、直前のオプションのドット文字にもマッチします。

  • 次に、キャプチャした大文字を小文字に変換し、置換関数に戻る際に _ を先行文字としてreplace関数に戻す。これはreplace部分にanonymous関数を使うことで実現される。

  • これは、開始する大文字を次のように置き換えます。 _ + 小文字にします。

  • 最後に開始アンダースコアを削除すると、目的の出力が得られます。

    var s = 'TypeOfData.AlphaBeta';
    console.log(s.replace(/(?:^|\.?)([A-Z])/g, function (x,y){return "_" + y.toLowerCase()}).replace(/^_/, ""));
    
    

または

var s = 'TypeOfData.AlphaBeta';
alert(s.replace(/\.?([A-Z])/g, function (x,y){return "_" + y.toLowerCase()}).replace(/^_/, ""));

単語全体が大文字の場合、これを止める方法はないでしょうか。 MotorRPMmotor_rpm の代わりに motor_r_p_m または BatteryAAAbattery_aaa の代わりに battery_a_a_a ?

var s = 'MotorRMP';
alert(s.replace(/\.?([A-Z]+)/g, function (x,y){return "_" + y.toLowerCase()}).replace(/^_/, ""));