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

IT技术 javascript
2021-01-29 20:55:46

我有

var id="ctl03_Tabs1";

使用 JavaScript,我如何获得最后五个字符或最后一个字符?

6个回答

编辑:正如其他人所指出的,使用slice(-5)代替substr. 但是,请参阅.split().pop()此答案底部解决方案以了解另一种方法。

原答案:

您需要结合使用 Javascript 字符串方法.substr().length属性。

var id = "ctl03_Tabs1";
var lastFive = id.substr(id.length - 5); // => "Tabs1"
var lastChar = id.substr(id.length - 1); // => "1"

这将获取从 id.length - 5 开始的字符,并且由于 .substr() 的第二个参数被省略,因此继续到字符串的末尾。

您也可以使用.slice()下面其他人指出方法。

如果您只是想在下划线后查找字符,则可以使用以下命令:

var tabId = id.split("_").pop(); // => "Tabs1"

这会将字符串拆分为下划线上的数组,然后从数组中“弹出”最后一个元素(这是您想要的字符串)。

如果你在这里,因为你想获取文件名的扩展名,然后filename.split(".").pop()是显著更聪明比3,这些答案的金润的负值切片提使用负值,但会发生什么,当Tabs12出现了,你得到abs12的结果。.split("_").pop()此处发布解决方案再次比任何人说应该使用切片要聪明得多
2021-03-16 20:55:46
在您的测试中,.split().pop()仍然是每秒 500 万次操作。这不是性能问题,直到它成为性能问题。;)
2021-03-17 20:55:46
第一个解决方案可以变得更短和更快,请参阅下面的答案。但是,在这种特殊情况下,我确实同意拆分和流行的想法。
2021-03-19 20:55:46
.slice(-5) 和 .substr(length - 5) 相比,这.split().pop()是一个很大的性能损失如果这是您在循环中使用的东西并且性能至关重要,那么您需要牢记这一点。
2021-03-19 20:55:46
@HutchMoore 你是对的。我已经编辑了我的答案,提到这slice是一个更好的选择。
2021-03-31 20:55:46

不要使用.substr(). 请改用该.slice()方法,因为它是跨浏览器兼容的(参见 IE)。

const id = "ctl03_Tabs1";
console.log(id.slice(id.length - 5)); //Outputs: Tabs1
console.log(id.slice(id.length - 1)); //Outputs: 1

带有负值的 substr() 在 IE 中不起作用

我认为 slice 只有在其一致时才有效?如果结局是_Tabs15什么?slice(-5) 只会抓取abs15? split/pop 对于不同长度的效果要好得多......
2021-03-19 20:55:46
这应该是答案,以这种方式使用切片也更高效jsperf.com/slice-vs-substr-and-length
2021-03-24 20:55:46
是的 slice 接受负值,这很棒!slice()参考:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
2021-03-27 20:55:46
Chrome 55 似乎认为 substr 快了 20%
2021-03-29 20:55:46
我更喜欢这个答案,尽管接受的答案很好用。
2021-04-05 20:55:46

您可以使用带有负起始位置substr() 方法来检索最后 n 个字符。例如,这将获得最后 5 个:

var lastFiveChars = id.substr(-5);
这是迄今为止实现结果的最佳和最短方法
2021-03-18 20:55:46
@RogerPerkins 当这篇文章是关于 substr 的时候,你为什么要发布一个带有 substring 的例子?
2021-03-27 20:55:46
最佳和简短的答案。无需知道原始字符串长度(对于当前浏览器,因此我们排除 IE)
2021-03-28 20:55:46
这听起来不错,但并不总是有效,请参见此处:w3schools.com/jsref/tryit.asp?filename=tryjsref_substring4
2021-04-02 20:55:46
我对哪种语言使用哪个子字符串命令感到困惑,虽然看起来 javascript 可以使用任何一种,但看起来只有 substr 对负数才有效。看起来甚至 w3schools 也对 substr 的操作感到困惑,声明为负数: <br/> 如果 start 是负数, substr() 将其用作从字符串末尾开始的字符索引。<br/> 如果 start 为负数或大于字符串长度,则 start 设置为 0
2021-04-07 20:55:46

获取最后一个字符很容易,因为您可以将字符串视为数组:

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

要获取字符串的一部分,可以使用substr函数或substring函数:

id.substr(id.length - 1); //get the last character
id.substr(2);             //get the characters from the 3rd character on
id.substr(2, 1);          //get the 3rd character
id.substr(2, 2);          //get the 3rd and 4th characters

substr之间的区别在于substring如何处理第二个(可选)参数。在 中substr,它是索引中的字符数(第一个参数)。在 中substring,它是字符切片应该结束的位置的索引。

你有一个错字 susbstr 应该是 substr
2021-04-06 20:55:46

以下脚本显示了使用 JavaScript 在字符串中获取最后 5 个字符和最后 1 个字符的结果:

var testword='ctl03_Tabs1';
var last5=testword.substr(-5); //Get 5 characters
var last1=testword.substr(-1); //Get 1 character

输出 :

Tabs1 // 有 5 个字符

1 // 得到 1 个字符

与 IE 不兼容,请参阅我的回答。
2021-03-26 20:55:46