如何获取字符串的最后一个字符?


526

如何获取字符串的最后一个字符:

"linto.yahoo.com."

该字符串的最后一个字符是 "."

我怎么找到这个?


您是否可以接受答案,因为它是最好的答案,应该首先显示。
沙库

Answers:


995

String.prototype.slice方法是一种优雅而又简短的选择。

只是:

str.slice(-1);

负起始索引将字符串从length+index,切成lengthindex -1,最后一个字符被提取:

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

9
旁注:数组也有一个slice()方法。-它们的功能在概念上相似(部分副本)--------(以防万一,您正在阅读代码并查看.slice()
Peter Ajtai

1
“ UTF-8字符串”是什么意思?这个短语没有任何意义。FWIW,JavaScript字符串本身就是有趣的野兽:它们是无符号的16位整数值的序列。如果字符串的目的是存储字符,那么上面的代码将返回最后的16位值,如果它是代理对的第二部分,那么这将不是一个漂亮的值。但是,“ UTF-8字符串”到底是什么意思?UTF-8是一种编码方案,如果您有字节数组,这可能很有意义,但是对于字符串则毫无意义。只是好奇。
Ray Toal 2013年

4
拒绝投票,因为这不能回答问题。它假定用户只想删除字符,但是如果您需要捕获最后一个字符并根据其内容做出响应怎么办?str.charAt()答案是正确的。
gregtczap 2014年

6
@Egg似乎您没有尝试过我的示例,str.slice(-1)但确实得到了字符串的最后一个字符(根据需要的OP),就像您使用过的一样str.charAt(str.length - 1),尝试:"abc".slice(-1)。我在这里显示了String.prototype.slice带有负索引的用法。str.slice(-n)将获取n原始字符串的最后一个字符作为新的字符串值。更多信息:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
CMS

9
@CMS是的,您的方法实际上捕获了字符串的最后一个字符而不进行修整。也不错的优雅方法。由于某种原因,我认为它会修剪这些字符并返回修剪后的字符串。抱歉,我没有先尝试一下,真是个白痴。
gregtczap 2014年

97

用途charAt

charAt()方法返回字符串中指定索引处的字符。

您可以将此方法与length字符串的属性结合使用,以获取该字符串中的最后一个字符。
例如:

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



50

您可以使用不同的方法来实现此目标,但要获得不同的性能,

1.使用括号表示法:

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

但是不建议使用方括号。在这里检查原因

2. charAt [index]:

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

这是可读且最快的。这是最推荐的方式。

3.子串:

str.substring(str.length - 1);

4.切片:

str.slice(-1);

它比子字符串快一点。

您可以在这里查看性能

使用ES6:

您可以使用 str.endsWith("t");

但是IE不支持它。在此处检查有关ends的更多详细信息


2
无需在当前计算机上进行性能压缩。使用最简洁的解决方案。我的投票str.slice(-1);
雪崩

1
我不确定endsWith这里是否适合,这会带来完全不同的效果。
约翰·蒙哥马利

38

对参数-1使用substr

“ linto.yahoo.com。”。substr(-1);

等于 ”。”

注意:

要从字符串的末尾提取字符,请使用负号(在IE 8及更早版本中不起作用)。


3
好像这样一个比slice()短,我不知道哪一个更好,更快。
斯特拉明

12

一个简单的方法是使用这个:)

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

1
不错而简单的+1
朱利安

1
ES6确实不错,但如果您必须支持它就无法在IE中使用,但是可以将其填充
sanjsanj

我完全看不出如何回答这个问题,获取字符串的最后一个字符与检查它是否匹配特定字符完全不同。
约翰·蒙哥马利

7

您可以像这样获得最后一个字符:

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

4

使用JavaScript charAt函数可在给定的0索引位置获取字符。使用length找出String的长度。您希望最后一个字符的长度为1。例如:

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];

尽管此代码段可以解决问题,但提供说明确实有助于提高您的帖子质量。请记住,您将来会为读者回答这个问题,而这些人可能不知道您提出代码建议的原因。也请尽量不要在代码中加入解释性注释,这会降低代码和解释的可读性!
kayess

0

您可以使用这种简单的ES6方法

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


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

这将适用于所有浏览器。


0

您可以使用以下内容。在最后一个字符的情况下,这是一个过大的杀伤力,但对于子字符串,它很有用:

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));
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.