41

Вопрос по regex, javascript – Разделить заглавными буквами в Javascript

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

Примеры того, что я пытаюсь сделать:

"HiMyNameIsBob"  ->   "Hi My Name Is Bob"
"GreetingsFriends" -> "Greetings Friends"

Я знаю оstr.split() метод, однако я не уверен, как заставить эту функцию работать с заглавными буквами.

Я пробовал:

str.split("(?=\\p{Upper})")

К сожалению, это не работает, любая помощь будет отличной.

  • Опрятно, я этого не знала, спасибо за головы!

    от user1294188
  • @AshBurlaczenko да, в последних версиях.

    от
  • @ shiplu.mokadd.im, это не то, что говорит ваш ответ.

    от
  • Шаблон должен быть изменен. В настоящее время он не соответствует предшествующим строчным буквам или одиночным заглавным буквам.

    от
  • Чтобы не привередничать, но мне это тоже нужно. Ответ выше НЕ возвращает «Привет, меня зовут Боб». Возвращает массив. Чтобы получить строку назад, сделайте это:input.split(/(?=[A-Z])/).join(" ");

    от
  • IE разрешает использование метода split.

    от
  • Обновил этот ответ благодаря @Grandizer

    от
  • Большой! Я не знал, что это будет так просто, я ничего не смог найти в Google, спасибо

    от user1294188
  • 99

    Используйте RegExp-литералы, прогноз и

    [A-Z]:

    "HiMyNameIsBob".split(/(?=[A-Z])/).join(" ");  // -> "Hi My Name Is Bob"
    

  • 8

    Вы можете использовать String.match, чтобы разделить его.

    "HiMyNameIsBob".match(/[A-Z]*[^A-Z]+/g) 
    // output 
    // ["Hi", "My", "Name", "Is", "Bob"]
    

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

    "helloHiMyNameIsBob".match(/[A-Z]*[^A-Z]+/g) 
    // Output
    ["hello", "Hi", "My", "Name", "Is", "Bob"]