Как я могу вырезать последний символ из строки в jquery?

#javascript #jquery

#javascript #jquery

Вопрос:

предположим, что у меня есть

var name = «канишка»;

Как я могу вырезать только последний символ, чтобы на выходе вместо него было ‘a’?

я прочитал вопрос

Как я могу вырезать первый символ из строки в jquery?

автор jin Yong ,

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

не удалось получить помощь из ответов, пожалуйста, помогите

Ответ №1:

Используя обычный javascript, вы можете сделать

 name.charAt(name.length-1)
  

Дополнительная информация о charAt http://www.w3schools.com/jsref/jsref_charat.asp

Комментарии:

1. Наконец-то кто-то использует свой мозг, а не подстроку (что бессмысленно и глупо в данном случае)! 1. конечно, учитывая, что строка является массивом, вы даже можете сделать name[name.length-1] .

2. @OJ: Как ты думаешь, почему substring() это хуже, чем charAt() здесь, кроме того, что он на несколько символов длиннее? Кстати, доступ к символам в строке через числовые имена свойств был нестандартным до ECMAScript 5 и не поддерживался в IE 7 или более ранних версиях (не уверен насчет IE 8).

3. @Tim: [] поддерживается в IE8. Не так, как вы сказали, в IE7 или более ранних версиях. @OJ: Строки не являются массивами. String поддерживается [] в современных браузерах, но это все еще не массив.

Ответ №2:

 Array.prototype.pop.apply(name);
  

^_^

или, если вы хотите быть скучным:

 name.substr(name.length-1);
  

или:

 name.split('').reverse().shift()
  

или:

 name.split(name.substr(0, name.length-1)).pop()
  

или:

 name.constructor.prototype.charAt.call(name.split('').reverse(), 0)
  

или:

 var chr; name.split('').forEach(function(c){ chr=c; });
  

или (ладно, это серьезно):

 /.$/.exec(name)[0]
  

или

 name[name.length-1];
  

Комментарии:

1. Все они скучны, учитывая, что для извлечения одного символа вы можете индексировать непосредственно в массив и избежать всех накладных расходов, которые вы предложили.

2. @OJ — что, не нравятся мои ненужные накладные расходы ?!? 🙁

3. @OJ: Вы можете использовать только [] , если вас не волнует поддержка IE6 и IE7. (IE6 IE7 составляют 10-20% пользователей браузера, и эта цифра — к счастью! — быстро падает, но все еще значимо).

4. @TJ Да, приятель, ты прав. Эти браузеры — это ЛАВАШ. Я лично отказываюсь поддерживать такие старые браузеры (два основных номера версий позади — это шутка, и IE10 не за горами). Давайте сделаем своим долгом заставить людей обновлять 🙂

Ответ №3:

Если вы хотите, чтобы «a» в «kanishka»:

 var name = "kanishka";
name = name.substring(name.length - 1);
  

Бесплатный живой пример

Комментарии:

1. что со всеми -2 в ответах? Это даст вам ‘ka’

2. @cwolves: Это была опечатка, очевидно, вы заметили это до того, как я исправил. 🙂

3. нажимает кнопку ааааааааааааааааааааааааааааааааааааа

4. name.slice(-1) немного аккуратнее.

Ответ №4:

 name = name.substr(name.length-1,name.length);
  

Комментарии:

1. ему нужен последний символ, а не строка до последнего

2. попробуйте еще раз! 🙂 Чего вы хотите: name.substr(name.length-1)

Ответ №5:

Обзор ваших вариантов, представленных различными ответами здесь:
(обратите внимание, что это ответ CW, поскольку он представляет контент сообщества)

  1. substring :

     var lastChar = name.substring(name.length - 1);
      
    • Подробно, но понятно.
    • Широко поддерживается.
  2. substr :

     var lastChar = name.substr(name.length - 1);
      
    • Многословный (думал, чуть менее подробный), но понятный.
    • Широко поддерживается (хотя и не строго стандартен, и в некоторых браузерах есть крайние случаи; см. Комментарии).
  3. slice :

     var lastChar = name.slice(-1);
      
    • Лаконичный, понятный, как только вы привыкнете к идиоме, но непонятный для не-l33t c0d3rz.
    • Широко поддерживается.
    • Обычно работает медленнее или медленнее всего в большинстве браузеров (но не во всех).
  4. charAt :

     var lastChar = name.charAt(name.length - 1);
      
    • Подробный, но очень понятный.
    • Широко поддерживается.
    • Самый быстрый (или привязанный к самому быстрому с [] ) в большинстве браузеров (обычно со значительным отрывом).
  5. [] :

     var lastChar = name[name.length - 1];
      
    • Лаконично и понятно.
    • Не поддерживается IE7 и более ранними версиями.
    • Самый быстрый (или привязанный к самому быстрому с charAt ) в большинстве браузеров (обычно со значительным отрывом).

(При всем уважении к нестандартным подходам cwolves, я придерживался мейнстрима, как скучный труженик, которым я и являюсь.)

Бесплатный тест jsperf

Что вы должны использовать? Это полностью зависит от вас. Обратите внимание, что все вышеперечисленные опции выполняются достаточно быстро, вероятность того, что скорость этой операции действительно важна в 99,999% реальных случаев, действительно очень мала.

Комментарии:

1. substr() не является строго стандартным, хотя, как вы говорите, он широко поддерживается. Его реализация немного отличается в IE 7 (опять же, не уверен насчет 8 или 9) от других браузеров тем, что отрицательный символьный индекс обрабатывается как 0, а не вычитается из длины.

2. @TIm: Эй, посмотри на это. Это не в основной спецификации, а в приложении к ней (B.2.3, если быть точным, как в 3-м, так и в 5-м изданиях). Неудивительно, что я никогда не использую substr . 🙂

3. J.: slice() это то место, где он находится для подстрок в JS. Он стандартный, имеет отрицательные смещения для l33t c0d3rz и поддерживается повсеместно.

Ответ №6:

Аккуратный, короткий, кроссбраузерный способ — это

 name.slice(-1);
  

Комментарии:

1. Неплохо. 🙂 Любопытно, что это, как правило, медленный вариант в нескольких браузерах (не то чтобы это имело значение), и я не могу понять, почему. Смотрите в сообщении CW округление параметров.