Как пример:
Из текста 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];
JavaScript
Как обрезать текст при маленьком разрешении вставив между многоточие ...
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/ - см. Регулярные выражения, Строки, Массивы.
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/ - см. Регулярные выражения, Строки, Массивы.
Абдукарим Каримов
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(''));
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(''));
Геннадий Пашевин
а если мы не знаем содержимое 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'));
Изи ведь, даже с доп. проверками.
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}}).*?(..\\.[^.]+)$`);
const re = new RegExp(`^(.{1,${max}}).*?(..\\.[^.]+)$`);
можно рассплитить фразу на две так, чтобы справа оставалось n-символов, а потом два куска фразы отрендерить в отдельные блоки и первому через css поставить text-overflow: ellipsis, тогда при маленьких разрешениях будут добавляться точки в зависимости от того, сколько символов влазит слева, а при больших разрешениях будет отображаться нормально
https://jsfiddle.net/muhurov/qxaL7usg/4/
https://jsfiddle.net/muhurov/qxaL7usg/4/
Похожие вопросы
- Замена текста на кнопке на сайте
- JavaScript автонабор/автоудаление текста
- Помогите решить задачу по js! Программа выводит все заглавные буквы в тексте. Как распределить эти буквы по алфавиту?
- Как только с конца массива обрезать все пустые элементы? var arr = [0,,2,,,];
- Если в массиве меньше 2-х чисел, вернуть строку, сообщающую, что чисел недостаточно.
- Интересный вопрос: У кого-то получиться скопировать текст из следующей страницы:
- отступ при вводе текста
- Как с помощью js придать в тексте конкретной букве или знаку стили
- Шифровальщик текста на js
- Как правильно найти наибольший и наименьший значения массива?