Ответ 1
Используйте RegExp-литералы, прогноз и [A-Z]
:
"HiMyNameIsBob".split(/(?=[A-Z])/).join(" "); // -> "Hi My Name Is Bob"
Я пытаюсь разбить строку кепками с помощью Javascript,
Примеры того, что я пытаюсь сделать:
"HiMyNameIsBob" -> "Hi My Name Is Bob"
"GreetingsFriends" -> "Greetings Friends"
Мне известен метод str.split()
, но я не уверен, как заставить эту функцию работать с заглавными буквами.
Я пробовал:
str.split("(?=\\p{Upper})")
К сожалению, это не работает, любая помощь будет большой.
Используйте RegExp-литералы, прогноз и [A-Z]
:
"HiMyNameIsBob".split(/(?=[A-Z])/).join(" "); // -> "Hi My Name Is Bob"
Вы можете использовать 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"]
Решение для текста, который начинается с маленькой буквы -
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;
Чтобы расширить на Роб 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);