Есть Строка разной длины, как вывести первый символ начиная с первого слова и его первого символа и дальше после каждого пробела?
function Abbr(words) {
} Это должно быть как функция Тоесть пользователь вводит к примеру "привет как дела" а получает "пкд" Спасибо
Ответы (2 шт):
str.split("разделитель") — разбивает строку на массив, убирая из неё переданный разделитель
arr.map(func) — Вызывает функцию для каждого элемента массива и подменяет этот элемент на результат вызова функции.
arr.join("строка между элементами") — собирает элементы массива обратно в строку.
let str = "Привет, как дела ?";
console.log( ex1(str) );
console.log( ex2(str) );
console.log( ex3(str) );
/***/
function ex1(str) {
let words = str.split(" ");
let result = "";
for( let i = 0; i < words.length; i++ ) {
let word = words[i];
if( /[a-zа-яё]/i.test(word[0]) ) {
result += word[0];
}
}
return result;
}
function ex2(str) {
return str.split(" ").map(word => /[a-zа-яё]/i.test(word[0]) ? word[0] : "").join("");
}
function ex3(str) {
/* Так можно, но не нужно. (см. "регулярные выражения") */
return str.match(/(?<=^|\s)([a-zа-яё])/ig).join("");
}
В вариантах со split(" ") есть допущение: Всё что начинается с пробела, считается словом. Чтобы брать только слова, можно добавить небольшую проверку:
/[a-zа-яё]/i.test(word[0]) — [Аниглийские или русские буквы], i — insensitive (т.е. и заглавные, и мелкие), проверяет на совпадение word[0] первую букву слова. Возвращается true или false.
.map(word => /[a-zа-яё]/i.test(word[0]) ? word[0] : "") (тернарный оператор): Если выражение вернет true, возьмется word[0], иначе: Пустая строка, которая не повлияет на результат после join(""). Был бы другой разделитель вместо пустой строки, пришлось бы переписать его в виде
str.split(" ").map(word => word[0]).filter(letter => /[a-zа-яё]/i.test(letter) ).join("")
let words='привет как дела'
function Abbr(words) {
words=words.split(' ') //сначала отделим слова друг от друга пробелами и получим массив в котором слова будут выглядеть вот так: ['привет','как','дела']
return words.map(i=>i[0]).join('')// после вернём нулевые нулевые индексы каждого элемента в массиве и соеденим их при помощи join('')
}
console.log(Abbr(words)) //и выводим в консоль