Как преобразовать строку PascalCase
в строку underscore_case
? Мне нужно преобразовать точки, чтобы подчеркнуть.Javascript convert PascalCase to underscore_case
например. конвертировать
TypeOfData.AlphaBeta
в
type_of_data_alpha_beta
Как преобразовать строку PascalCase
в строку underscore_case
? Мне нужно преобразовать точки, чтобы подчеркнуть.Javascript convert PascalCase to 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(/^_/, ""));
ли способ, чтобы остановить его, когда целое слово в верхнем регистре. например.
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(/^_/, ""));
Спасибо, любой способ остановить его, если целое слово находится в верхнем регистре. например. 'MotorRMP' в' motor_rpm' вместо 'motor_r_p_m'? или 'BatteryAAA' в' battery_aaa' вместо 'battery_a_a_a'. – zahmati
'alert (s.replace (/ \.? ([AZ] +)/g, function (x, y) {return" _ "+ y.toLowerCase()}) заменить (/^_ /," ")); ' –
Это поможет вам довольно далеко: https://github.com/domchristie/humps
Вы, вероятно, придется использовать регулярное выражение замены для замены "" с подчеркиванием.
почему downvote? – voondo
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;
}
Попробуйте эту функцию, надеюсь, что это помогает.
Не так ли неправильно в направлении? 'CamelToUnderscore' необходим. – zahmati
В качестве альтернативы с помощью lodash:
lodash.snakeCase(str);
Пример:
_.snakeCase('TypeOfData.AlphaBeta');
// ➜ 'type_of_data_alpha_beta'
Lodash является прекрасной библиотекой, чтобы дать ярлык для многой повседневной JS tasks.There много других функций аналогична строка манипуляции, таких как camelCase
, kebabCase
и т. Д.
Wow спасибо за это, я использовал свой собственный toSnakeCase, toTitleCase (_ startCase), toCamelCase. Благодаря этому я теперь переключился на lodash, и он работает намного лучше, чем мой! Я понятия не имел, что у lodash! – Noitidart
str.split(/(?=[A-Z])/).join('_').toLowerCase();
u're приветствовать
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);
Простенький, нравится – Ced
Попробуйте эту ссылку дружище это поможет Вам наверняка http://jamesroberts.name/blog/2010/02/22/string- функции для javascript-trim-to-camel-case-to-pashed-and-to-underscore/ – Santhucool