Пробел между строчными и прописными буквами в строке в JavaScript - PullRequest
6 голосов
/ 27 января 2011

Я хочу добавить пробел между строчными и прописными буквами в одной строке.Например:

FruityLoops
FirstRepeat

Теперь я хочу добавить пробел между строчными и прописными буквами.Я не знаю, как мне начать в JavaScript.Что-то с substr или поиском?Может кто-нибудь может мне помочь?

Ответы [ 4 ]

18 голосов
/ 27 января 2011
var str = "FruityLoops";

str = str.replace(/([a-z])([A-Z])/g, '$1 $2');

Пример: http://jsfiddle.net/3LYA8/

3 голосов
/ 27 января 2011

что-то простое, как это:

"LoL".replace(/([a-z])([A-Z])/g, "$1 $2")

может быть достаточно;)

2 голосов
/ 27 января 2011

Вы можете сделать это с помощью ручного поиска, но это может быть проще с регулярным выражением.Предполагая:

  • Вы знаете, что начинается с заглавной буквы
  • Вам не нужен пробел перед этой столицей
  • Вам нужен пробел перед все последующие столицы

Тогда:

function spacey(str) {  
    return str.substring(0, 1) +
           str.substring(1).replace(/[A-Z]/g, function(ch) {
        return " " + ch;
    });
}

alert(spacey("FruitLoops")); // "Fruit Loops"

Живой пример

Более эффективноверсия, вдохновленная (но отличная от) ответ Патрика :

function spacey(str) {  
    return str.substring(0, 1) +
           str.substring(1).replace(/([a-z])?([A-Z])/g, "$1 $2");
}

alert(spacey("FruityLoops"));  // "Fruity Loops"
alert(spacey("FruityXLoops")); // "Fruity X Loops"

Живой пример

0 голосов
/ 27 января 2011

Опция regexp выглядит лучше всего.Однако получить правильное регулярное выражение довольно сложно.

Здесь есть еще один вопрос с некоторыми более сложными опциями:

Регулярное выражение, разделение строки заглавными буквами, но игнорирование TLA

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...