Как я могу преобразовать PascalCase
строка в underscore_case
строка? Мне нужно преобразование точек для подчеркивания также.
например, преобразуйте
TypeOfData.AlphaBeta
в
type_of_data_alpha_beta
"alphaBetaGama".replace(/([A-Z])/g, "_$1").toLowerCase() // alpha_beta_gamma
проблема - Потребность преобразовать строку Camel-регистра (такую как имя свойства) в подчеркивание разрабатывают для соответствия интерфейсным требованиям или для метапрограммирования.
Объяснение Эта строка использует функцию регулярных выражений, куда это может возвратить подобранный результат (первая пара () $1
, второй $2
, и т.д.).
Каждое соответствие в строке преобразовывается, чтобы иметь подчеркивание перед ним с _$1
обеспеченная строка. В той точке строка похожа alpha_Beta_Gamma
.
Для исправления капитализации вся строка преобразовывается toLowerCase ().
, Так как toLowerCase является довольно дорогой операцией, ее лучшее, чтобы не поместить его в обработчик цикличных выполнений для каждого случая соответствия и выполнить его однажды на всей строке.
После toLowerCase
это получившая строка alpha_beta_gamma
(в этом примере)
, я портировал код в 1175208 от 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
"TestString".replace(/[A-Z]/g, val => "_" + val.toLowerCase()).replace(/^_/,"")
замены весь верхний регистр с подчеркиванием и нижним регистром, затем удаляет начальный символ подчеркивания.