Cách chọn hai ký tự cuối của chuỗi


193

Tôi cần chọn hai ký tự cuối cùng từ biến, cho dù đó là chữ số hay chữ cái.

Ví dụ:

var member = "my name is Mate";

Tôi muốn hiển thị hai chữ cái cuối cùng từ chuỗi trong memberbiến.

Câu trả lời:



23

Hãy thử điều này, lưu ý rằng bạn không cần chỉ định chỉ mục kết thúc substring.

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

Câu trả lời ban đầu của bạn có lẽ phù hợp hơn. Theo tài liệu của MDNsubstr , "JScript của Microsoft không hỗ trợ các giá trị âm cho chỉ mục bắt đầu."

23

EDIT: 2020: sử dụng string.slice(-2)như những người khác nói - xem bên dưới.

Bây giờ 2016 chỉ string.substr(-2)nên thực hiện thủ thuật (không phải chuỗi con (!))

lấy từ MDN

Cú pháp

str.substr(start[, length])

Thông số

khởi đầu

Vị trí để bắt đầu giải nén ký tự. Nếu một số âm được đưa ra, nó được coi là strLpm + start trong đó strLpm là chiều dài của chuỗi (ví dụ: nếu bắt đầu là -3 thì nó được coi là strLạng - 3.) chiều dài Tùy chọn. Số lượng ký tự để giải nén.

EDIT 2020

MDN nói

Cảnh báo: Mặc dù String.prototype.substr (Hoài) không bị phản đối nghiêm ngặt (như trong "loại bỏ khỏi các tiêu chuẩn Web"), nó được coi là một chức năng kế thừa và nên tránh khi có thể. Nó không phải là một phần của ngôn ngữ JavaScript cốt lõi và có thể bị xóa trong tương lai.


1
"JScript của Microsoft không hỗ trợ các giá trị âm cho chỉ mục bắt đầu. Để sử dụng tính năng này trong JScript, bạn có thể sử dụng mã sau ..." - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ (trong khi đối với lát cắt họ không có bất kỳ polyfill nào: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ trộm )
George Birbilis

lưu ý rằng JScript không nằm trong trình duyệt, đây là ngôn ngữ kịch bản để hoạt động với tự động hóa Windows Script Host chủ yếu (tương tự VBScript), do đó, hợp lý là tại thời điểm đó, nó không bao gồm các phương thức như vậy. Các phiên bản Windows mới quảng bá PowerShell, với một cú pháp khó hiểu. Dù sao, nhận xét về lát cắt là ứng cử viên tốt hơn so với nền tảng trong trường hợp của JScript, vì nó hỗ trợ các chỉ số tiêu cực docs.microsoft.com/en-us/preingly-versions/windows/iêu
George Birbilis

9

Ví dụ sau sử dụng slice()với các chỉ mục tiêu cực

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

Bạn co thể thử

member.substr(member.length-2);

Bạn đã bỏ lỡ thành viên.length từ chỉ mục bắt đầu của bạn :)
mattytommo

Thật tuyệt, tôi đã cập nhật câu trả lời của mình để phản ánh, cảm ơn TJ và Ibu :)
mattytommo

1
@TJCrowder: Khá chắc chắn rằng chỉ số âm là vị trí bắt đầu không hoạt động cho IE8 trở xuống.

1
@amnotiam: Cảm ơn bạn, rất tốt để biết! Tôi mới thử nghiệm và chắc chắn là không hoạt động trên IE7 hoặc IE8 (và có lẽ sẽ không hoạt động trên IE6). IE9 ở chế độ tiêu chuẩn vẫn ổn (nhưng không tương thích). Tôi không bao giờ sử dụng substr, và bây giờ tôi ước tôi có thể tìm thấy chủ đề trong đó một số git tự mãn đã cho tôi một thời gian khó khăn cho điều đó (và đặc biệt là không sử dụng các chỉ mục tiêu cực) - bây giờ tôi có thể biện minh cho nó! :-)
TJ Crowder

3

Nếu đó là một số nguyên, bạn cần một phần của ....

var result = number.toString().slice(-2);

2

Bạn nên sử dụng chuỗi con, không phải jQuery, để làm điều này.

Hãy thử một cái gì đó như thế này:

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

W3Schools (không chính thức, nhưng đôi khi hữu ích): http://www.w3schools.com/jsref/jsref_subopes.asp

Thêm liên kết MDN theo yêu cầu của người bình luận: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/subopes


3
vui lòng cung cấp các liên kết đến một tài liệu chính thức như MSDN hoặc MDN, không phải w3fools :)
jbabey

w3schools không "chính thức" nhưng thường có thông tin đáng tin cậy. MSDN là chính thức, nhưng là IE cụ thể và không liên quan gì đến Firefox, Safari, v.v.
Matt

đã thêm liên kết đến nhận xét khi bạn đăng bài này
Matt

1
var member = "my name is maanu";

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

alert(answer);

1
Mã làm gì? Xin vui lòng viết một lời giải thích về những gì điều này đạt được.
DNKROZ

3
Công bằng mà nói, câu hỏi rất cụ thể về những gì mã cần làm, vì vậy một câu trả lời bao gồm (về bản chất) một dòng mã là khá tự giải thích.
anaximander

1
mã đầu ra sẽ là 'nu'. Lấy 2 từ thiện cuối cùng từ.
Biju s

7
Dường như với tôi như đầu ra mã sẽ là "tên tôi là maa" (mọi thứ ~ ngoại trừ ~ hai chữ cái cuối cùng), đó không phải là câu hỏi yêu cầu, nếu tôi hiểu đúng.
ewino
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.