6 ответов:
вы можете просто добавить пробел перед каждой заглавной характер и обрезать начальные и конечные пробелы
s = s.replace(/([A-Z])/g, ' ').trim()
это найдет каждое вхождение символа нижнего регистра, за которым следует символ верхнего регистра, и вставит пробел между ними:
s = s.replace(/([a-z])([A-Z])/g, ' ');для особых случаев, когда 2 последовательных заглавных буквы происходят (например: ThisIsATest) добавить дополнительный код ниже:
s = s.replace(/([A-Z])([A-Z])/g, ' ');
могу ли я предложить небольшое изменение к принятому в настоящее время ответу:
function insertSpaces(string) { string = string.replace(/([a-z])([A-Z])/g, ' '); string = string.replace(/([A-Z])([A-Z][a-z])/g, ' ') return string; }Это означает, что:
ACROText -> ACRO Text UserNameTest -> User Name Testчто может быть немного более полезным, если вы имеете дело с именами столбцов БД (и аббревиатур для некоторых вещей)
Это должно вставить пробел между каждой заглавной буквой, которая не предшествовала заглавной буквы.
var myString = "MySites" var newString = ""; var wasUpper = false; for (var i = 0; i < myString.length; i++) { if (!wasUpper && myString[i] == myString.toUpperCase()[i]) { newString = newString + " "; wasUpper = true; } else { wasUpper = false; } newString = newString + myString[i]; }
newStringбудет иметь значение. Кроме того, если вы хотите сократить свой код с помощью регулярного выражения, вы можете использовать следующий код из Javascript camelCase в обычную форму"thisStringIsGood" // insert a space before all caps .replace(/([A-Z])/g, ' ') // uppercase the first character .replace(/^./, function(str){ return str.toUpperCase(); })
регулярное выражение, чтобы найти нижний регистр-верхняя граница регистра, а затем вставить пробел
<div id='x'>ThisIsMySites</div> $('#x').text( $('#x').text().replace(/([a-z])([A-Z])/g, " ") );
можно использовать
String#split()и взгляд вперед для заглавной буквы алфавита ([A-Z]) и нажмитеArray#join()массив с пробелом:let stringCamelCase = "MySites"; let string = stringCamelCase.split(/(?=[A-Z])/).join(" "); console.log(string)или, как функция объекта строки:
String.prototype.cC2SC = function() { return this.split(/(?=[A-Z])/).join(" "); } console.log("MyCamelCase".cC2SC());
Comments