Як вибрати останні два символи рядка


194

Мені потрібно вибрати останні два символи зі змінної, будь то цифра чи літери.

Наприклад:

var member = "my name is Mate";

Я хотів би показати останні два букви з рядка в memberзмінній.

Відповіді:



23

Спробуйте це, зауважте, що не потрібно вказувати кінцевий індекс у substring.

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

Ваша оригінальна відповідь, ймовірно, була більш доречною Згідно з substrдокументами MDN , "JScript Microsoft не підтримує негативні значення для стартового індексу".

23

EDIT: 2020: використовуйте, string.slice(-2)як кажуть інші - див. Нижче.

тепер 2016 просто string.substr(-2)повинен зробити трюк (не підрядку (!))

взяті з MDN

Синтаксис

str.substr(start[, length])

Параметри

почати

Місце, з якого можна розпочати вилучення символів. Якщо вказано від'ємне число, воно трактується як strLength + start, де strLength - це довжина рядка (наприклад, якщо start - -3, це трактується як strLength - 3.) довжина Необов'язково. Кількість символів для вилучення.

EDIT 2020

MDN каже

Попередження: Хоча String.prototype.substr (…) не є строго застарілим (як у "вилученому з веб-стандартів"), він вважається спадковою функцією і його слід уникати, коли це можливо. Він не є частиною основної мови JavaScript і може бути видалений у майбутньому.


1
"JScript Microsoft не підтримує негативні значення для індексу запуску. Щоб використовувати цю функцію в JScript, можна використовувати наступний код ..." - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… (тоді як для зрізу у них немає жодної polyfill: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… )
Джордж Бірбіліс

зауважте, що JScript не знаходиться у веб-переглядачі, це мова скриптів для роботи з автоматизацією хостів Windows Script в основному (подібно до 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, і тепер я хотів би знайти те, де якийсь самовдоволений git дав мені важкий час для цього (і зокрема, не використовуючи негативні показники) - я зараз можу це виправдати! :-)
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/uk/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
Що робить код? Будь ласка, напишіть пояснення, чого цього досягається.
ДНКРОЗ

3
Чесно кажучи, питання є дуже конкретним щодо того, що потрібно робити кодом, тому відповідь, що складається з (по суті) одного рядка коду, є досить зрозумілим.
anaximander

1
вихід коду буде "nu". Візьміть останні 2 символи від слова.
Biju s

7
Мені здається, що вихідним кодом буде "мені звуть маа" (все ~ крім ~ останніх двох літер), і це не те запитання, якщо я правильно його зрозумів.
ewino
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.