Вставить пробел перед заглавными буквами



у меня есть строка "MySites". Я хочу поместить пробел между My и Sites.



как я могу сделать это в jQuery или JavaScript?

1145   6  

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, " ") );

http://jsfiddle.net/uXy64/

можно использовать 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

    Ничего не найдено.