Я хотел бы усечь динамически загруженную строку, используя прямой JavaScript. Это URL, поэтому пробелов нет, и мне явно не нужны границы слов, только символы.
Вот что я получил:
var pathname = document.referrer; //wont work if accessing file:// paths
document.getElementById("foo").innerHTML = "<a href='" + pathname +"'>" + pathname +"</a>"
Ответы:
Используйте метод подстроки :
Итак, в вашем случае:
источник
length
- возвращает пустое значение.toString().
чтобы преобразовать его в строку, котораяsubstring()
может обрабатывать.да, подстрока Вам не нужно делать Math.min; подстрока с более длинным индексом, чем длина строки, заканчивается исходной длиной.
Но!
Это ошибка. Что если в document.referrer есть апостроф? Или различные другие символы, которые имеют особое значение в HTML. В худшем случае код злоумышленника в реферере может внедрить JavaScript на вашу страницу, что является дырой в безопасности XSS.
Хотя можно избежать символов в pathname вручную, чтобы остановить это, это немного болезненно. Вам лучше использовать методы DOM, чем возиться со строками innerHTML.
источник
Думаю, я бы упомянул Sugar.js . У этого есть метод усечения, который является довольно умным.
Из документации :
Пример:
Вывод:
источник
Sugar is a Javascript library that extends native objects
… Расширение нативных объектов в JavaScript обычно считается плохой идеей ™.Следующий код усекает строку и не разбивает слова на части, а вместо этого отбрасывает слово, где произошло усечение. Полностью основано на источнике Sugar.js.
источник
Вот один метод, который вы можете использовать. Это ответ на один из вызовов FreeCodeCamp:
источник
Обновленная версия ES6
источник
Да,
substring
прекрасно работаетисточник
в случае, если вы хотите усечь по слову.
источник
источник