¿Cómo puedo convertir la cadena PascalCase en una cadena underscore_case/snake_case ? También necesito convertir puntos en guiones bajos.
p.ej. convertir
TypeOfData.AlphaBetaen
type_of_data_alpha_betaPodrías intentar los siguientes pasos.
Capture todas las letras mayúsculas y también haga coincidir 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 anterior. 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 por _ + minúscula_letra.
Finalmente, eliminar el guión bajo inicial le dará el resultado deseado.
var s = 'TypeOfData.AlphaBeta'; console.log(s.replace(/(?:^|\.?)([AZ])/g, function (x,y){return "_" + y.toLowerCase()}).replace(/^_/, ""));O
var s = 'TypeOfData.AlphaBeta'; alert(s.replace(/\.?([AZ])/g, function (x,y){return "_" + y.toLowerCase()}).replace(/^_/, ""));cualquier forma de detenerlo cuando una palabra completa está en mayúsculas. p.ej.
MotorRPMenmotor_rpmen lugar demotor_r_p_m? oBatteryAAAenbattery_aaaen lugar debattery_a_a_a?
var s = 'MotorRMP'; alert(s.replace(/\.?([AZ]+)/g, function (x,y){return "_" + y.toLowerCase()}).replace(/^_/, ""));str.split(/(?=[AZ])/).join('_').toLowerCase();de nada
var s1 = 'someTextHere'; var s2 = 'SomeTextHere'; var o1 = s1.split(/(?=[AZ])/).join('_').toLowerCase(); var o2 = s2.split(/(?=[AZ])/).join('_').toLowerCase(); console.log(o1); console.log(o2);Alternativamente usando lodash :
lodash.snakeCase(str);Ejemplo:
_.snakeCase('TypeOfData.AlphaBeta'); // ➜ 'type_of_data_alpha_beta' Lodash es una excelente biblioteca para brindar acceso directo a muchas tareas js cotidianas. Hay muchas otras funciones de manipulación de cadenas similares, como camelCase , kebabCase , etc.