kebab camelcase javascript string camelcasing underscores

kebab - javascript camelcase to dash



Javascript convierte PascalCase en underscore_case (5)

¿Cómo puedo convertir la cadena PascalCase en una cadena underscore_case ? Necesito conversión de puntos para subrayar también.

p.ej. convertir

TypeOfData.AlphaBeta

dentro

type_of_data_alpha_beta


Alternativamente usando lodash :

lodash.snakeCase(str);

Ejemplo:

_.snakeCase(''TypeOfData.AlphaBeta''); // ➜ ''type_of_data_alpha_beta''

Lodash es una excelente biblioteca para dar acceso directo a muchas tareas cotidianas de js. Hay muchas otras funciones similares de manipulación de cadenas, como camelCase , kebabCase , etc.



Puedes probar los siguientes pasos.

  • Capture todas las letras mayúsculas y también coincida con el carácter de punto opcional anterior.

  • Luego convierta las letras mayúsculas capturadas a minúsculas y luego regrese para reemplazar la función con un _ como carácter precedente. Esto se logrará mediante el uso de la función anónima en la pieza de repuesto.

  • Esto reemplazaría la letra mayúscula inicial a _ + letra minúscula.

  • Finalmente, eliminar el subrayado inicial le dará el resultado deseado.

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

O

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

cualquier forma de detenerlo cuando una palabra completa está en mayúsculas. p.ej. MotorRPM en MotorRPM en lugar de motor_r_p_m ? o BatteryAAA en BatteryAAA en lugar de battery_a_a_a ?

var s = ''MotorRMP''; alert(s.replace(//.?([A-Z]+)/g, function (x,y){return "_" + y.toLowerCase()}).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; }

Prueba esta función, espero que ayude.


str.split(/(?=[A-Z])/).join(''_'').toLowerCase();

de nada

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);