Làm thế nào để có được ký tự cuối cùng của một chuỗi?


526

Cách lấy ký tự cuối cùng của chuỗi:

"linto.yahoo.com."

Ký tự cuối cùng của chuỗi này là "."

Làm thế nào tôi có thể tìm thấy điều này?


bạn có thể chấp nhận câu trả lời này không , vì đây là câu trả lời hay nhất và nên được hiển thị trước.
Sharku

Câu trả lời:


995

Một thay thế thanh lịch và ngắn, là String.prototype.slicephương pháp.

Chỉ bằng cách:

str.slice(-1);

Một chỉ mục bắt đầu phủ định cắt chuỗi từ length+index, đến length, là chỉ mục -1, ký tự cuối cùng được trích xuất:

"abc".slice(-1); // "c";

9
Lưu ý bên: mảng cũng có một slice()phương pháp. - Chức năng của chúng tương tự nhau về mặt khái niệm (bản sao một phần) -------- (Chỉ trong trường hợp bạn đang đọc mã và xem .slice())
Peter Ajtai

1
"Chuỗi UTF-8" nghĩa là gì? Các cụm từ không có ý nghĩa. Mặc dù FWIW, các chuỗi JavaScript là những con thú ngộ nghĩnh: chúng là các chuỗi các giá trị nguyên 16 bit không dấu. Nếu mục đích của chuỗi của bạn là lưu trữ các ký tự, thì đoạn mã trên trả về giá trị 16 bit cuối cùng, sẽ không đẹp nếu đó là phần thứ hai của cặp thay thế. Nhưng một lần nữa, ý nghĩa chính xác của "chuỗi UTF-8" là gì? UTF-8 là một lược đồ mã hóa có thể có ý nghĩa nếu bạn có một mảng byte, nhưng có nghĩa là không có gì khi nói đến chuỗi. Chỉ tò mò thôi.
Ray Toal

4
Bị từ chối vì điều này không trả lời câu hỏi. Nó giả sử người dùng muốn xóa ký tự, nhưng nếu bạn cần chụp ký tự cuối cùng và trả lời dựa trên những gì nó là? Các câu trả lời str.charAt () là những câu trả lời đúng.
gregtczap

6
@Egg, dường như bạn đã không thử ví dụ của tôi, str.slice(-1)thực sự có được ký tự cuối cùng của chuỗi (theo yêu cầu của OP), giống như khi bạn sử dụng str.charAt(str.length - 1), hãy thử : "abc".slice(-1). Tôi đã chỉ ra ở đây một cách sử dụng String.prototype.slicevới một chỉ số tiêu cực. str.slice(-n)sẽ lấy các nký tự cuối cùng của chuỗi gốc làm giá trị chuỗi mới. Thông tin thêm: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/
mẹo

9
@CMS Bạn nói đúng, phương thức của bạn thực sự lấy char cuối cùng của chuỗi mà không cắt xén nó. Phương pháp thanh lịch đẹp quá. Vì một số lý do, tôi đã nghĩ rằng nó sẽ cắt bớt những ký tự đó và trả về một chuỗi đã cắt. Xin lỗi về điều đó, tôi cảm thấy như một thằng ngốc vì đã không thử nó trước.
gregtczap

97

Sử dụng charAt :

Phương thức charAt () trả về ký tự tại chỉ mục đã chỉ định trong một chuỗi.

Bạn có thể sử dụng phương thức này kết hợp với thuộc lengthtính của chuỗi để lấy ký tự cuối cùng trong chuỗi đó.
Ví dụ:

const myString = "linto.yahoo.com.";
const stringLength = myString.length; // this will be 16
console.log('lastChar: ', myString.charAt(stringLength - 1)); // this will be the string


64
str.charAt(str.length - 1)

Một số trình duyệt cho phép (dưới dạng tiện ích mở rộng không chuẩn), bạn rút ngắn phần này thành:

str[str.length - 1];

50

Bạn có thể đạt được điều này bằng nhiều cách khác nhau nhưng với hiệu suất khác nhau,

1. Sử dụng ký hiệu ngoặc:

var str = "Test"; var lastLetter = str[str.length - 1];

Nhưng không nên sử dụng dấu ngoặc. Kiểm tra lý do tại đây

2. charAt [chỉ mục]:

var lastLetter = str.charAt(str.length - 1)

Điều này có thể đọc và nhanh nhất trong số những người khác. Đó là cách được khuyến nghị nhất.

3. chuỗi con:

str.substring(str.length - 1);

4. lát:

str.slice(-1);

Nó nhanh hơn một chút so với chuỗi con.

Bạn có thể kiểm tra hiệu suất ở đây

Với ES6:

Bạn có thể dùng str.endsWith("t");

Nhưng nó không được hỗ trợ trong IE. Kiểm tra chi tiết hơn về kết thúc với đây


2
Không cần phải thực hiện ép hiệu suất trên các máy hiện tại. Sử dụng giải pháp ngắn gọn nhất. Phiếu bầu của tôi là vàostr.slice(-1);
avalanche1

1
Tôi không chắc làm thế nào endsWithphù hợp ở đây, đó là một cái gì đó hoàn toàn khác nhau.
John Montgomery

38

Sử dụng substr với tham số -1 :

"linto.yahoo.com.". chất nền (-1);

bằng "."

Ghi chú:

Để trích xuất các ký tự từ cuối chuỗi, sử dụng số bắt đầu âm (Điều này không hoạt động trong IE 8 trở về trước).


3
Có vẻ như cái này ngắn hơn lát (), tôi tự hỏi cái nào tốt hơn và nhanh hơn.
stramin

12

Một cách dễ dàng để làm điều đó là sử dụng cái này :)

var word = "waffle"
word.endsWith("e")

1
Đẹp và đơn giản +1
Julian

1
Bổ sung thực sự tốt cho ES6 nhưng nó không hoạt động trong IE nếu bạn phải hỗ trợ nó, mặc dù vậy nó có thể được hoàn thành .
sanjsanj

Tôi không thấy cách này trả lời câu hỏi, việc lấy ký tự cuối cùng của chuỗi hoàn toàn khác với việc kiểm tra xem nó có khớp với một ký tự cụ thể không.
John Montgomery

8

Bạn có thể nhận được char cuối cùng như thế này:

var lastChar=yourString.charAt(yourString.length-1);

4

Sử dụng hàm charAt JavaScript để nhận ký tự ở vị trí được lập chỉ mục 0. Sử dụng độ dài để tìm hiểu chuỗi dài bao nhiêu. Bạn muốn ký tự cuối cùng có độ dài - 1. Ví dụ:

var word = "linto.yahoo.com.";
var last = word.charAt(word.length - 1);
alert('The last character is:' + last);

4
var firstName = "Ada";
var lastLetterOfFirstName = firstName[firstName.length - 1];

Mặc dù đoạn mã này có thể giải quyết câu hỏi, bao gồm một lời giải thích thực sự giúp cải thiện chất lượng bài đăng của bạn. Hãy nhớ rằng bạn đang trả lời câu hỏi cho độc giả trong tương lai và những người đó có thể không biết lý do cho đề xuất mã của bạn. Xin vui lòng cố gắng không làm đông mã của bạn với các bình luận giải thích, điều này làm giảm khả năng đọc của cả mã và các giải thích!
kayess

0

Bạn có thể sử dụng phương pháp ES6 đơn giản này

const lastChar = (str) => str.split('').reverse().join(',').replace(',', '')[str.length === str.length + 1 ? 1 : 0];


// example
console.log(lastChar("linto.yahoo.com."));

Điều này sẽ làm việc trong mọi trình duyệt.


0

Bạn có thể sử dụng như sau. Trong trường hợp của ký tự cuối cùng, đó là một mức độ quá mức nhưng đối với một chuỗi con, nó hữu ích:

var word = "linto.yahoo.com.";
var last = ".com.";
if (word.substr(-(last.length)) == last)
alert("its a match");

-1
>Try this...     

console.log("linto.yahoo.com.".charAt("linto.yahoo.com.".length-1));
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.