我有
var id="ctl03_Tabs1";
使用JavaScript,如何获得最后五个字符或最后一个字符?
我有
var id="ctl03_Tabs1";
使用JavaScript,如何获得最后五个字符或最后一个字符?
当前回答
编辑:正如其他人指出的那样,使用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开始的字符。长度- 5,由于.substr()的第二个参数被省略,因此将一直持续到字符串的末尾。
您也可以使用.slice()方法,正如其他人在下面指出的那样。
如果你只是想找到下划线后面的字符,你可以使用这个:
var tabId = id.split("_").pop(); // => "Tabs1"
这将字符串拆分为一个下划线数组,然后从数组中“弹出”最后一个元素(这是您想要的字符串)。
其他回答
检查子字符串函数。
要得到最后一个字符:
id.substring(id.length - 1, id.length);
最后 5 个 var id=“ctl03_Tabs1”; var res = id.charAt(id.length-5) 警报;
最后 var id=“ctl03_Tabs1”; var res = id.charAt(id.length-1) 警报;
var id="ctl03_Tabs1";
var res = id.charAt(id.length-1);
我发现了这个问题,通过一些研究,我发现这是得到最后一个字符的最简单的方法。
正如其他人所提到的,为了完整起见,添加了最后5个:
var last5 = id.substr(-5);
获取最后一个字符很容易,因为你可以把字符串当作数组:
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中,它是字符切片应该结束的位置的索引。
性能
今天2020.12.31我在Chrome v87、Safari v13.1.2和Firefox v84上的MacOs HighSierra 10.13.6上执行测试,以获得最后N个字符的大小写(最后一个字母大小写的结果,为了清晰起见,我在单独的答案中给出)。
结果
适用于所有浏览器
基于切片的解决方案D是最快或最快的 解G最慢
细节
我执行2个测试用例:
当字符串有10个字符-你可以在这里运行它 当字符串有1M字符-你可以在这里运行它
下面的代码片段给出了解决方案 一个 B C D E F G(我)
//https://stackoverflow.com/questions/5873810/how-can-i-get-last-characters-of-a-string // https://stackoverflow.com/a/30916653/860099 function A(s,n) { return s.substr(-n) } // https://stackoverflow.com/a/5873890/860099 function B(s,n) { return s.substr(s.length - n) } // https://stackoverflow.com/a/17489443/860099 function C(s,n) { return s.substring(s.length - n, s.length); } // https://stackoverflow.com/a/50395190/860099 function D(s,n) { return s.slice(-n); } // https://stackoverflow.com/a/50374396/860099 function E(s,n) { let i = s.length-n; let r = ''; while(i<s.length) r += s.charAt(i++); return r } // https://stackoverflow.com/a/17489443/860099 function F(s,n) { let i = s.length-n; let r = ''; while(i<s.length) r += s[i++]; return r } // my function G(s,n) { return s.match(new RegExp(".{"+n+"}$")); } // -------------------- // TEST // -------------------- [A,B,C,D,E,F,G].map(f=> { console.log( f.name + ' ' + f('ctl03_Tabs1',5) )}) This shippet only presents functions used in performance tests - it not perform tests itself!
这里是chrome的示例结果