Преобразовать camelCaseText в текст предложения - PullRequest
106 голосов
/ 29 августа 2011

Как мне преобразовать строку типа «helloThere» или «HelloThere» в «Hello There» в JavaScript?

Ответы [ 16 ]

2 голосов
/ 20 февраля 2014

попробуйте эту библиотеку

http://sugarjs.com/api/String/titleize

'man from the boondocks'.titleize()>"Man from the Boondocks"
'x-men: the last stand'.titleize()>"X Men: The Last Stand"
'TheManWithoutAPast'.titleize()>"The Man Without a Past"
'raiders_of_the_lost_ark'.titleize()>"Raiders of the Lost Ark"
1 голос
/ 23 сентября 2018

Я думаю, что это можно сделать только с помощью reg exp /([a-z]|[A-Z]+)([A-Z])/g и замены "$1 $2".

ILoveTheUSADope -> I Love The USA Dope

1 голос
/ 21 июня 2018

Ниже приведена ссылка, которая демонстрирует строку с верблюжьим регистром в строку предложения с использованием регулярного выражения.

Введите

myCamelCaseSTRINGToSPLITDemo

выход

my Camel Case STRING To SPLIT Demo


Это регулярное выражение для преобразования случая верблюда в текст предложения

(?=[A-Z][a-z])|([A-Z]+)([A-Z][a-rt-z][a-z]\*)

с $1 $2 в качестве замены.

Нажмите, чтобы посмотреть преобразование в регулярное выражение

1 голос
/ 22 октября 2016

Я не пробовал ответить всем, но несколько решений, с которыми я работал, не соответствовали всем моим требованиям.

Я смог придумать что-то, что сделало ...

export const jsObjToCSSString = (o={}) =>
    Object.keys(o)
          .map(key => ({ key, value: o[key] }))
          .map(({key, value}) =>
              ({
                key: key.replace( /([A-Z])/g, "-$1").toLowerCase(),
                value
              })
          )
          .reduce(
              (css, {key, value}) => 
                  `${css} ${key}: ${value}; `.trim(), 
              '')
1 голос
/ 12 февраля 2016

Ни один из приведенных выше ответов не работал для меня идеально, поэтому пришлось приехать с собственным велосипедом:

function camelCaseToTitle(camelCase) {
    if (!camelCase) {
        return '';
    }

    var pascalCase = camelCase.charAt(0).toUpperCase() + camelCase.substr(1);
    return pascalCase
        .replace(/([a-z])([A-Z])/g, '$1 $2')
        .replace(/([A-Z])([A-Z][a-z])/g, '$1 $2')
        .replace(/([a-z])([0-9])/gi, '$1 $2')
        .replace(/([0-9])([a-z])/gi, '$1 $2');
}

Контрольные примеры:

null => ''
'' => ''
'simpleString' => 'Simple String'
'stringWithABBREVIATIONInside => 'String With ABBREVIATION Inside'
'stringWithNumber123' => 'String With Number 123'
'complexExampleWith123ABBR890Etc' => 'Complex Example With 123 ABBR 890 Etc'
0 голосов
/ 09 марта 2018

Добавление еще одного решения ES6, которое мне понравилось больше после того, как я не был доволен несколькими мыслями выше.

https://codepen.io/902Labs/pen/mxdxRv?editors=0010#0

const camelize = (str) => str
    .split(' ')
    .map(([first, ...theRest]) => (
        `${first.toUpperCase()}${theRest.join('').toLowerCase()}`)
    )
    .join(' ');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...