С помощью регулярных выражений (я предполагаю) или каким-либо другим методом, как я могу конвертировать такие вещи, как:
marker-image
или my-example-setting
к markerImage
или myExampleSetting
.
Я думал о том, чтобы просто разделить, а -
затем преобразовать индекс этого гипена +1 в верхний регистр. Но это выглядит довольно грязно и надеется на некоторую помощь с регулярным выражением, которая может сделать код чище.
Нет jQuery ...
javascript
regex
camelcasing
Оскар Годсон
источник
источник
Ответы:
Попробуй это:
Регулярное выражение будет соответствовать
-i
inmarker-image
и захватывать толькоi
. Это затем в верхнем регистре в функции обратного вызова и заменяется.источник
myString.replace(/([a-z][A-Z])/g, function (g) { return g[0] + '-' + g[1].toLowerCase() });
myString.replace(/-([a-z])/i, function (i) { return i[1].toUpperCase() });
i
флаг. Без этого ваш шаблон пропускает «прописные части» (не будет изменен на «заглавные части»). Кроме того, я лично предпочитаю улучшенную читаемость нескольких параметров, но это, очевидно, вопрос стиля. В общем, я бы пошел с.replace( /-([a-z])/gi, function ( $0, $1 ) { return $1.toUpperCase(); } );
.var camelCased = myString.replace(/(-+|\s+)\w/g, function (g) { return g[1].toUpperCase(); });
var camelCased = myString.replace(/(-+|\s+)\w/g, function (g) { return g[g.length - 1].toUpperCase(); });
?Это одна из замечательных утилит, которую предлагает Lodash, если вы просветлены и включили ее в свой проект.
источник
Вы можете получить гипс и следующий символ и заменить его на заглавную версию персонажа:
источник
Вот моя версия функции camelCase:
Он обрабатывает все следующие крайние случаи:
Вот ссылка на живые тесты: http://jsfiddle.net/avKzf/2/
Вот результаты тестов:
Обратите внимание, что строки, начинающиеся с разделителей, в начале будут содержать заглавную букву. Если это не то, что вы ожидаете, вы всегда можете использовать lcfirst. Вот мое первое, если вам это нужно:
источник
Это не кричит для
RegExp
меня. Лично я стараюсь избегать регулярных выражений, когда достаточно простых методов строк и массивов:источник
Вот еще один вариант, который объединяет пару ответов здесь и делает его методом в строке:
Используется так:
источник
источник
Вы можете использовать верблюд из NPM.
npm install --save camelcase
источник
Еще один дубль.
источник
Также возможно использовать indexOf с рекурсией для этой задачи.
сравнение ::: измерить время выполнения для двух разных скриптов:
код:
источник
Просто версия с флагом, для цикла и без регулярных выражений:
источник
Вот моя реализация (просто чтобы испачкать руки)
источник
Используйте это, если вы разрешаете числа в вашей строке.
Очевидно, что части, начинающиеся с цифры, не будут написаны заглавными буквами, но это может быть полезно в некоторых ситуациях.
источник