Удалить последний символ строки с Javascript

Javascript

Мы можем просто использовать substring (), чтобы получить всю строку, за исключением последнего символа, например:

conststr = ‘foo,bar,baz,’;
constnewStr = str.substr(0, str.length — 1);

console.log(newStr); // вывод: ‘foo,bar,baz’

В приведенном выше примере вы можете видеть, что мы указываем начальную позицию в 0 и конечную позицию в длине строки, за исключением одного символа в конце. Это помогает нам получить строку без последнего символа.

Использование slice()

С помощью slice() мы можем извлечь все символы строки, кроме последнего символа, например:

constnewStr = str.slice(0, -1);
console.log(newStr); // вывод: ‘foo,bar,baz’

В приведенном выше примере вы можете видеть, что мы указываем начальную позицию как 0, а конечную-как -1. Указание отрицательных позиций в slice() означает, что они находятся относительно конца строки. Таким образом, мы получаем всю строку с отрезанным последним символом.

Разбиение строки и выскакивание или нарезка последнего символа

Мы можем разбить строку на каждый символ, чтобы получить массив всех символов в строке. Если мы просто выберем последний символ из этого массива символов, а затем соединим все символы обратно в строку, мы получим ту же строку, но без последнего символа. Например:

conststrArr = str.split(»);
strArr.pop();

console.log(strArr.join(»)); // вывод: ‘foo,bar,baz’

Или, как вариант, мы можем использовать Array.prototype.slice():

console.log(str.split(»).slice(0, -1).join(»)); // выход: ‘foo,bar,baz’

Имейте в виду, что этот метод может быть медленнее других, поскольку он включает в себя три вызова функций.

Что делать, если последний символ является символом Юникода?

Большинство современных движков JavaScript кодируют строки как UTF-16. Это означает, что строковые функции, такие как substring (), slice() и split (), будут отлично работать с символами, представленными одной «кодовой точкой» (т. е. Одним слотом в юникоде, представляющим символ). Это включает в себя общие международные языки. Рассмотрим, например, следующее:

conststr = ‘groß’;
// используя подстроку
console.log(str.substring(0, str.length — 1)); // вывод: ‘gro’
// используя slice
console.log(str.slice(0, -1)); // вывод: ‘gro’
// через сплит (или поп)
console.log(str.split(»).slice(0, -1).join(»)); // output: ‘gro’

Как вы можете видеть из приведенных выше примеров, все работает так, как ожидалось. Однако если бы последний символ имел более высокую кодовую точку юникода, он был бы сохранен как «суррогатная пара» (что является способом кодирования символов юникода с высокими кодовыми точками в схеме кодирования UTF-16). Это будет означать, что мы не получим ожидаемого результата.

Оцените статью
Образовательный портал WELCOME4U.RU
Добавить комментарий

Adblock
detector