PascalCase
文字列をunderscore_case
文字列に変換するにはどうすればよいですか?ドットをアンダースコアに変換する必要もあります。
例えば。変換する
TypeOfData.AlphaBeta
に
type_of_data_alpha_beta
以下の手順を試すことができます。
すべての大文字をキャプチャし、先行するオプションのドット文字にも一致します。
次に、キャプチャされた大文字を小文字に変換し、戻って関数を前の文字として_
に置き換えます。これは、交換部品で匿名関数を使用することにより実現されます。
これは、開始大文字を_
+ lowercase_letterに置き換えます。
最後に、開始アンダースコアを削除すると、目的の出力が得られます。
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(/^_/, ""));
word全体が大文字の場合に停止する方法。例えば。
MotorRPM
をmotor_rpm
ではなくmotor_r_p_m
に入れますか?またはBatteryAAA
をbattery_aaa
ではなくbattery_a_a_a
に入れますか?
var s = 'MotorRMP';
alert(s.replace(/\.?([A-Z]+)/g, function (x,y){return "_" + y.toLowerCase()}).replace(/^_/, ""));
str.split(/(?=[A-Z])/).join('_').toLowerCase();
どういたしまして
var s1 = 'someTextHere';
var s2 = 'SomeTextHere';
var o1 = s1.split(/(?=[A-Z])/).join('_').toLowerCase();
var o2 = s2.split(/(?=[A-Z])/).join('_').toLowerCase();
console.log(o1);
console.log(o2);
または、 lodash を使用します。
lodash.snakeCase(str);
例:
_.snakeCase('TypeOfData.AlphaBeta');
// ➜ 'type_of_data_alpha_beta'
Lodashは、多くの日常的なjsタスクへのショートカットを提供する優れたライブラリです。camelCase
、kebabCase
など、他にも多くの類似した文字列操作関数があります。
"alphaBetaGama".replace(/([A-Z])/g, "_$1").toLowerCase() // alpha_beta_gamma
問題-インターフェース要件を満たすため、またはメタプログラミングのために、キャメルケース文字列(プロパティ名など)をアンダースコアスタイルに変換する必要があります。
説明この行は、一致した結果を返すことができる正規表現の機能を使用しています(()の最初のペアは$1
、2番目は$2
など)。
文字列内の各一致は、_$1
文字列が指定されたアンダースコアを含むように変換されます。その時点で、文字列はalpha_Beta_Gamma
のようになります。
大文字を修正するために、文字列全体がLowerCase()に変換されます。
ToLowerCaseはかなり高価な操作であるため、各マッチケースのループハンドラーに入れずに、ストリング全体で1回実行するのが最善です。
toLowerCase
の後、結果の文字列はalpha_beta_gamma
です(この例では)
コードを 1175208 from Python JavaScriptに移植しました。
function camelToSnakeCase(text) {
return text.replace(/(.)([A-Z][a-z]+)/, '$1_$2').replace(/([a-z0-9])([A-Z])/, '$1_$2').toLowerCase()
}
camelToSnakeCase('thisISDifficult') -> this_is_difficult
camelToSnakeCase('thisISNT') -> this_isnt
camelToSnakeCase('somethingEasyLikeThis') -> something_easy_like_this
これにより、かなり遠くまで移動できます。 https://github.com/domchristie/humps
「。」を置き換えるには、おそらくregex replaceを使用する必要があります。アンダースコア付き。
function toCamelCase(s) {
// remove all characters that should not be in a variable name
// as well underscores an numbers from the beginning of the string
s = s.replace(/([^a-zA-Z0-9_\- ])|^[_0-9]+/g, "").trim().toLowerCase();
// uppercase letters preceeded by a hyphen or a space
s = s.replace(/([ -]+)([a-zA-Z0-9])/g, function(a,b,c) {
return c.toUpperCase();
});
// uppercase letters following numbers
s = s.replace(/([0-9]+)([a-zA-Z])/g, function(a,b,c) {
return b + c.toUpperCase();
});
return s;
}
この機能を試してみてください。
"TestString".replace(/[A-Z]/g, val => "_" + val.toLowerCase()).replace(/^_/,"")
すべての大文字をアンダースコアと小文字に置き換え、先頭のアンダースコアを削除します。