JavaScript

Как обрезать текст при маленьком разрешении вставив между многоточие ...

Как пример:
Из текста someblablalblatestdevhost.ru
На выходе получить:
someblablalblatest...st.ru

Пытался сделать что-то подобное, только не знаю как делать дальше (новичок в JS).
let myStr = 'someblablalblatestdevhost.ru';
let myArr = myStr.split('.');
let myShortname = myArr.splice(-1);
let myDomainBase = myArr[myArr.length-1];
function cutTooLong(link){
    if( link.length > 25 ){
        link = link.match(/(.*)(..\..+?)$/);
                                                                           console.log( "link.match >> ", link );
        let cut = 25 - link[2].length;
                                                                           console.log( "cut: " + cut );
        link[1] = link[1].slice( 0, cut - 3 ) + "..." ;
                                                                            console.log( "link[1]: " + link[1] );
                                                                            console.log( "link[2]: " + link[2] );
        link = link[1] + link[2];
   }

    return link;
}

console.log( cutTooLong("someblablalblatestdevhost.ru") ); // someblablalblates...st.ru
console.log( cutTooLong("longteststringbubududu.moo.com") ); // longteststringbu...oo.com

________________

https://learn.javascript.ru/ - см. Регулярные выражения, Строки, Массивы.
AK
Almass Kautaev
62 360
Лучший ответ
Абдукарим Каримов console.log( cutTooLong("someblablalblatestdevhost.ru/id786876876876/somepage/player") ); // someblabl...st.ru/id786876876876/somepage/player
var str = 'someblablalblatestdevhost.ru';
var s = 'devho'
var l = s.length;
var ind = str.indexOf(s);
str = str.split('');
str.splice(ind, l);
str.splice(ind, 0, '...');
alert(str.join(''));
MT
Mailybalta Toqsaba
92 260
Геннадий Пашевин а если мы не знаем содержимое str?
Геннадий Пашевин и да, у стринга нет метода splice(), а еще slice() не изменяет переменную :)
const foo = (h, max = 24, min = 4) => {
 if (h.length <= Math.max(min, max -= 6)) return h;
 const re = new RegExp(`^([^.]{1,${max}})[^.]*?(..\\..+)$`);
 const [ok, part1, part2] = h.match(re) || [];
 return ok ? `${part1}...${part2}` : h;
};

let myStr = 'someblablalblatestdevhost.ru';
console.log(foo(myStr));
console.log(foo(myStr, 10));
console.log(foo('abc.de'));

Изи ведь, даже с доп. проверками.
Сергей Гонгадзе Добрые человеки указали на ошибку в регулярке, вот строка с правильной:
const re = new RegExp(`^(.{1,${max}}).*?(..\\.[^.]+)$`);
можно рассплитить фразу на две так, чтобы справа оставалось n-символов, а потом два куска фразы отрендерить в отдельные блоки и первому через css поставить text-overflow: ellipsis, тогда при маленьких разрешениях будут добавляться точки в зависимости от того, сколько символов влазит слева, а при больших разрешениях будет отображаться нормально
https://jsfiddle.net/muhurov/qxaL7usg/4/