Подтвердить что ты не робот

Разделить на Caps в Javascript

Я пытаюсь разбить строку кепками с помощью Javascript,

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

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

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

Я пробовал:

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

Вы можете использовать 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"]

Ответ 3

Решение для текста, который начинается с маленькой буквы -

let value = "getMeSomeText";
let newStr = '';
    for (var i = 0; i < value.length; i++) {
      if (value.charAt(i) === value.charAt(i).toUpperCase()) {
        newStr = newStr + ' ' + value.charAt(i)
      } else {
        (i == 0) ? (newStr += value.charAt(i).toUpperCase()) : (newStr += value.charAt(i));
      }
    }
    return newStr;

Ответ 4

Чтобы расширить на Роб W ответ.

Это заботится о любых предложениях с аббревиатурами, проверяя предшествующие символы нижнего регистра, добавляя [az], следовательно, это не проливает строки верхнего регистра.

// Enter your code description here
 var str = "THISSentenceHasSomeFunkyStuffGoingOn. ABBREVIATIONSAlsoWork.".split(/(?=[A-Z][a-z])/).join(" ");  // -> "THIS Sentence Has Some Funky Stuff Going On. ABBREVIATIONS Also Work."
 console.log(str);