JavaScript преобразовывает PascalCase в underscore_case

Как я могу преобразовать PascalCase строка в underscore_case строка? Мне нужно преобразование точек для подчеркивания также.

например, преобразуйте

TypeOfData.AlphaBeta

в

type_of_data_alpha_beta
57
задан 22 February 2019 в 07:29

3 ответа

"alphaBetaGama".replace(/([A-Z])/g, "_$1").toLowerCase() // alpha_beta_gamma

проблема - Потребность преобразовать строку Camel-регистра (такую как имя свойства) в подчеркивание разрабатывают для соответствия интерфейсным требованиям или для метапрограммирования.

Объяснение Эта строка использует функцию регулярных выражений, куда это может возвратить подобранный результат (первая пара () $1, второй $2, и т.д.).

Каждое соответствие в строке преобразовывается, чтобы иметь подчеркивание перед ним с _$1 обеспеченная строка. В той точке строка похожа alpha_Beta_Gamma.

Для исправления капитализации вся строка преобразовывается toLowerCase ().

, Так как toLowerCase является довольно дорогой операцией, ее лучшее, чтобы не поместить его в обработчик цикличных выполнений для каждого случая соответствия и выполнить его однажды на всей строке.

После toLowerCase это получившая строка alpha_beta_gamma (в этом примере)

5
ответ дан 1 November 2019 в 15:26

Это решение решает не запаздывающую проблему акронима с решениями выше

, я портировал код в 1175208 от Python до JavaScript.

код 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
3
ответ дан 1 November 2019 в 15:26
"TestString".replace(/[A-Z]/g, val => "_" + val.toLowerCase()).replace(/^_/,"")

замены весь верхний регистр с подчеркиванием и нижним регистром, затем удаляет начальный символ подчеркивания.

0
ответ дан 1 November 2019 в 15:26

Другие вопросы по тегам:

Похожие вопросы: