Я пытался заставить команду JavaScript regex превратить что-то вроде "thisString"
в, "This String"
но самое близкое, что я получил, это замена буквы, в результате чего-то вроде "Thi String"
или "This tring"
. Любые идеи?
Чтобы прояснить, я могу справиться с простотой использования заглавной буквы, я не так силен с RegEx, и я разбираюсь "somethingLikeThis"
в "something Like This"
том, где у меня возникают проблемы.
javascript
regex
Волшебник сделал это
источник
источник
Ответы:
дисплеи
Показать фрагмент кода
источник
str.replace(/((?<!^)[A-Z](?![A-Z]))(?=\S)/g, ' $1').replace(/^./, s => s.toUpperCase() );
Он будет преобразованuserID
вUser ID
, и даже будет преобразованuserIDField
вUser ID Field
У меня был бесполезный интерес к этому, особенно в обработке последовательностей заглавных букв, таких как xmlHTTPRequest. Перечисленные функции выдают «XML-запрос XML» или «HTTPRequest Xml», моя - «HTTP-запрос Xml».
В сущности есть также версия String.prototype .
источник
str.replace(/((?<!^)[A-Z](?![A-Z]))(?=\S)/g, ' $1').replace(/^./, s => s.toUpperCase() )
Это может быть кратко сделано с помощью регулярных выражений lookahead ( живая демонстрация ):
(Я думал, что
g
(глобальный) флаг был необходим, но как ни странно, это не в данном конкретном случае.)Использование функции lookahead with
split
гарантирует, что совпавшая заглавная буква не будет использоваться, и избегает использования начального пробела, если вам нужно иметь дело с UpperCamelCase. Чтобы использовать первую букву каждой буквы, вы можете использовать:Метод
map
массива является функцией ES5, но вы все равно можете использовать его в старых браузерах с некоторым кодом из MDC . Кроме того, вы можете перебирать элементы массива, используяfor
цикл.источник
Я думаю, что это должно быть в состоянии обрабатывать последовательные символы в верхнем регистре, а также простой CamelCase.
Например: someVariable => someVariable, но ABCCode! = ABC-код.
Приведенное ниже регулярное выражение работает на вашем примере, но также является распространенным примером представления сокращений в camcelCase.
Вы также можете настроить, как указано выше, чтобы использовать первый символ.
источник
spacecamel ( '') somethingLikeThis
// возвращаемое значение: что-то вроде этого
источник
Лодаш справляется с этим
_.startCase()
источник
Решение, которое также обрабатывает числа:
Протестировано здесь [JSFiddle, нет библиотеки. Не пробовал IE]; должно быть довольно стабильным.
источник
Если вы не заботитесь о старых браузерах (или не возражаете против использования для них резервной функции уменьшения ), это может разделить даже строки, такие как «xmlHTTPRequest» (но, конечно, подобные «XMLHTTPRequest» не могут).
источник
Моя версия
источник
Попробуйте это решение здесь -
источник
Не регулярное выражение, но полезно знать простые и старые методы, подобные этой:
источник