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

128
如果我在javascript中有以下变量
 var myString = "Test3";

如何在所有浏览器中(包括IE6)最快地从字符串中解析出“3”?


5
@Pekka - 我不同意,这里有7个答案,其中大部分都是错误的,因为它们在所有浏览器中都不起作用。并不像看起来的那么简单。 - leora
这里有一个不同方法的速度比较。通常是.substr( -1 ).splice( -1 )获胜,但即使通常最慢的.split( ' ' ).pop( )也曾经赢过一次。 - s3c
7个回答

212

由于在Javascript中,字符串是一个字符数组,所以你可以通过字符串长度来访问最后一个字符。

var lastChar = myString[myString.length -1];

3
好的——这个稍微快一些。参见 http://jsperf.com/get-last-character-from-string - ryanve
5
注意:这是在ES5中引入的,因此不支持非常旧的浏览器,例如IE6 - user6560716
73
IE6 - 23 Feb 2017 - 真的吗? - Avatar
11
这个在Mosaic里也行不通,只是提醒一下 ;) 说实话,问题确实指明他们正在寻找IE6兼容性,所以为了避免任何JavaScript考古学家的困惑,加上一条注释可能是合适的。 - ChrisM
2
@KhaledRamadan 看起来链接问题中的答案很好。我能帮你什么吗? - Jamie Dixon
显示剩余5条评论

114

它就是这样做的:

myString.substr(-1);

这会返回一个从 myString 的倒数第一个字符向前数一个字符的子字符串。

这也是有效的:

myString.charAt(myString.length-1);

还有这个:

myString.slice(-1);

4
Internet Explorer不支持substr函数。 - leora
1
你同意这在IE6 7中不起作用吗? - leora
@leora 根据https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substr,IE无法处理`substr`中的负值。 - ryanve
2
更好的“切片”。由于String.prototype.substr(...)并非严格废弃(如“从Web标准中删除”),因此它被认为是遗留函数,应尽可能避免使用。它不是核心JavaScript语言的一部分,将来可能会被删除。如果可能的话,请改用substring()方法。- 来自MDN - Ajeet Shah
这里有一个不同方法的速度比较。通常是.substr( -1 ).splice( -1 )获胜,但即使通常最慢的.split( ' ' ).pop( )也曾经赢过一次。 - s3c

6

这是唯一一个利用字符串是字符数组的事实的答案。 - Roland

6

Javascript字符串具有length属性,该属性可告诉您字符串的长度。

然后,您只需要使用substr()函数获取最后一个字符:

var myString = "Test3";
var lastChar = myString.substr(myString.length - 1);

编辑:是的,或者像我之前的其他帖子一样使用数组表示法。

这里解释了许多字符串函数


3
myString.substring(str.length,str.length-1)

你应该能够像上面这样做 - 这将获取最后一个字符。

1
我需要获取最后的 10 个字符,这段代码对我很有用:myString.substring(str.length,str.length-10)。谢谢伙计! - hmd
@hmd 我想你是指: myString.substring(str.length-10,str.length) - Dan Salo
@DanSalo myString.substring(myString.length,myString.length-10)或者myString.substring(myString.length-10, myString.length)都会返回相同的结果,即最后10个字符。 - hmd

2
使用 charAt 方法。该方法接受一个参数:字符的索引位置。
var lastCHar = myString.charAt(myString.length-1);

1
你应该查看charAt函数并获取字符串的长度。
var b = 'I am a JavaScript hacker.';
console.log(b.charAt(b.length-1));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接