Используя понятия RegExp, как я могу написать функцию, которая принимает строку, которая возвращает другую строку со всеми заглавными буквами, соединенными вместе? - PullRequest
0 голосов
/ 25 января 2020

Например:

capitalSentence("The Cat In The Hat") // "TCITH"
capitalSentence("And I Think to Myself What a Wonderful World") // "AITMWWW"

Пока у меня есть:

function capitalSentence(string) {
    var regex = new RegExp(`^[^A-Z]+`, 'g')
    var result = regex.exec(string);
    console.log(result);
}

Я думаю, что у меня есть регулярное выражение, но у меня возникают проблемы при попытке закодировать результаты в другую строку. Я пробовал push, exec и concat, но это не сработало.

Ответы [ 2 ]

2 голосов
/ 25 января 2020

Мы можем попробовать выполнить глобальную замену регулярных выражений для шаблона \s*[a-z]*\s*, заменив его пустой строкой, чтобы оставить только начальные заглавные буквы каждого слова.

var input = "And I Think to Myself What a Wonderful World";
var output = input.replace(/\s*[a-z]*\s*/g, "");
console.log(output);

Этот ответ предполагает, однако, что каждое слово будет содержать не более заглавной буквы, в самом начале каждого слова. Для более надежного решения мы можем попытаться найти все совпадения (?<!\S)[A-Z], а затем соединить соответствующие заглавные буквы вместе.

var re = /(?<!\S)[A-Z]/g;
var input = "And I THINK to Myself What a WonderFul World";
var output = "";
var m;

do {
    m = re.exec(input);
    if (m) {
        output += m[0];
    }
} while (m);

console.log(output);
1 голос
/ 25 января 2020

Вместо сопоставления всех заглавных букв вы можете заменить все символы, которые не являются заглавными буквами, вот пример:

function capitalSentence(s) {
  return s.replace(/[^A-Z]/g, "");
}

console.log(["The Cat In The Hat", "And I Think to Myself What a Wonderful World"].map(capitalSentence))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...