Как верблюжь и декамелизировать строки в JavaScript

Содержание

Когда вы работаете с логикой для создания плагинов, библиотек и других вещей, например, фреймворков, вам нужно будет создать представление в случае верблюжьей строки или динамически преобразовать строку на верблюжьей основе в пользовательское представление. Если вам нужно сделать это с помощью вашей любимой технологии JavaScript, мы покажем вам в этой статье 2 простых фрагмента, которые помогут вам преобразовать любую строку в версию для верблюда и наоборот.

Camelize

Следующая функция верблюда получает в качестве первого аргумента текст, который вы хотите верблюдовать. Как вы знаете, строку можно разделить одним пробелом, подчеркиванием и дефисом, поэтому функция camelize автоматически преобразует их все:

/**
* Camelize a string, cutting the string by multiple separators like
* hyphens, underscores and spaces.
*
* @param {text} string Text to camelize
* @return string Camelized text
*/
function camelize(text) {
return text.replace(/^([A-Z])|[\s-_]+(\w)/g, function(match, p1, p2, offset) {
if (p2) return p2.toUpperCase();
return p1.toLowerCase();
});
}

В следующих примерах показан результат использования функции camelize:

// someDatabaseFieldName
console.log(camelize("some_database_field_name"));
// someLabelThatNeedsToBeCamelized
console.log(camelize("Some label that needs to be camelized"));
// someJavascriptProperty
console.log(camelize("some-javascript-property"));
// someMixedStringWithSpacesUnderscoresAndHyphens
console.log(camelize("some-mixed_string with spaces_underscores-and-hyphens"));

Decamelize

В процессе декамелизации, вам нужно будет предоставить в качестве первого аргумента функции decamelize строку в случае верблюда, которую вы хотите декамелизировать, в качестве второго аргумента — разделитель, который будет использоваться для разделения каждого верблюжьего слова:

/**
* Decamelizes a string with/without a custom separator (underscore by default).
*
* @param str String in camelcase
* @param separator Separator for the new decamelized string.
*/
function decamelize(str, separator){
separator = typeof separator === 'undefined' ? '_' : separator;
return str
.replace(/([a-z\d])([A-Z])/g, '$1' + separator + '$2')
.replace(/([A-Z]+)([A-Z][a-z\d]+)/g, '$1' + separator + '$2')
.toLowerCase();
}

Примеры декамелизации:

// some database field name (separate with an empty space)
console.log(decamelize("someDatabaseFieldName", " "));
// some-label-that-needs-to-be-camelized (separate with an hyphen)
console.log(decamelize("someLabelThatNeedsToBeCamelized", "-"));
// some_javascript_property (separate with underscore)
console.log(decamelize("someJavascriptProperty", "_"));
Ссылка на основную публикацию
Adblock
detector