Как выбрать два последних символа строки


194

Мне нужно выбрать два последних символа из переменной, будь то цифра или буквы.

Например:

var member = "my name is Mate";

Я хотел бы показать последние две буквы из строки в memberпеременной.

Ответы:



23

Попробуйте это, обратите внимание, что вам не нужно указывать конечный индекс в substring.

var characters = member.substr(member.length -2);

Ваш оригинальный ответ был, вероятно, более уместным. Согласно документам MDNsubstr , «Microsoft JScript не поддерживает отрицательные значения для начального индекса».

23

РЕДАКТИРОВАТЬ: 2020: использовать, string.slice(-2)как говорят другие - см. Ниже.

теперь 2016 просто string.substr(-2)должен сделать свое дело (не подстрока (!))

взято из MDN

Синтаксис

str.substr(start[, length])

параметры

Начало

Место, с которого начинается извлечение символов. Если задано отрицательное число, оно обрабатывается как strLength + start, где strLength - длина строки (например, если start равен -3, он обрабатывается как strLength - 3.) length Необязательно. Количество символов для извлечения.

РЕДАКТИРОВАТЬ 2020

MDN говорит

Предупреждение: хотя String.prototype.substr (…) не является строго устаревшим (как в «удаленных из веб-стандартов»), он считается устаревшей функцией и его следует избегать, когда это возможно. Он не является частью основного языка JavaScript и может быть удален в будущем.


1
«Microsoft JScript не поддерживает отрицательные значения для начального индекса. Чтобы использовать эту функцию в JScript, вы можете использовать следующий код ...» - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… (тогда как для среза у них нет полифилла: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… )
Джордж Бирбилис

обратите внимание, что JScript не находится внутри браузера, это язык сценариев для работы с автоматизацией Windows Script Host в основном (аналогично VBScript), поэтому логично, что в свое время он не включал такие методы. Новые версии Windows поддерживают PowerShell с загадочный синтаксис. В любом случае, комментарий был о том, что срез был лучшим кандидатом, чем substr в случае JScript, поскольку он поддерживает отрицательные индексы docs.microsoft.com/en-us/previous-versions/windows/…
Джордж Бирбилис,

9

В следующем примере используются slice()отрицательные индексы

var str = 'my name is maanu.';
console.log(str.slice(-3));     // returns 'nu.' last two
console.log(str.slice(3, -7)); // returns 'name is'
console.log(str.slice(0, -1));  // returns 'my name is maanu'


5

Можешь попробовать

member.substr(member.length-2);

Вы пропустили member.length из вашего начального индекса :)
mattytommo

Ах, круто, я обновил свой ответ, чтобы отразить, спасибо TJ и
Ibu

1
@TJCrowder: уверен, что отрицательный индекс в качестве начальной позиции не работает для IE8 и ниже.

1
@amnotiam: Спасибо, очень приятно знать! Я только что проверил , и, конечно же, не работал на IE7 или IE8 (и, вероятно, не будет работать на IE6). IE9 в стандартном режиме был в порядке (но не совместим). Я никогда не использую substr, и теперь я хотел бы найти нить, где какой-то самодовольный мерзавец дал мне трудное время (и, в частности, не использовал отрицательные индексы) - теперь я могу это оправдать! :-)
TJ Crowder


2

Вы должны использовать подстроку, а не jQuery, чтобы сделать это.

Попробуйте что-то вроде этого:

member.substring(member.length - 2, member.length)

W3Schools (не официально, но иногда полезно): http://www.w3schools.com/jsref/jsref_substring.asp

Добавление ссылки MDN по запросу комментатора: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring


3
Пожалуйста, предоставьте ссылки на официальную документацию, такую ​​как MSDN или MDN, а не w3fools :)
jbabey

w3schools не является «официальным», но обычно имеет достоверную информацию. MSDN является официальным, но специфичен для IE и не имеет ничего общего с Firefox, Safari и т. Д.
Мэтт

Добавил ссылку на комментарий, когда вы публиковали это
Мэтт

1
var member = "my name is maanu";

var answer=member.substring(0,member.length - 2);

alert(answer);

1
Что делает код? Пожалуйста, напишите объяснение того, чего это достигает.
DNKROZ

3
Чтобы быть справедливым, вопрос очень специфичен в отношении того, что должен делать код, поэтому ответ, состоящий (по сути) из одной строки кода, довольно понятен.
Анаксимандр

1
вывод кода будет 'nu'. Возьмите последние 2 слова от слова.
Биджу с

7
Мне кажется, что вывод кода будет «меня зовут Маа» (все ~ кроме ~ последних двух букв), что не тот вопрос, который задан вопрос, если я правильно понял.
ewino
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.