我有

var id="ctl03_Tabs1";

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


当前回答

不要使用已弃用的.substr()!

使用.slice()方法,因为它是跨浏览器兼容的(见IE问题)。 或者使用.substring()方法。

它们在需求上有一些细微的差异,这些差异被正确地记录在:

const id = "ctl03_Tabs1"; console.log (id.slice (5));/ /输出:Tabs1 console.log (id.slice (1));/ /输出:1 //下面是比较慢的 console.log (id.substring (id。长度- 5));/ /输出:Tabs1 console.log (id.substring (id。长度- 1));/ /输出:1

其他回答

如果逗号是字符串中的最后一个字符,则该命令将删除逗号。

var str = $("#ControlId").val();

if(str.substring(str.length-1)==',') {

  var stringWithoutLastComma = str.substring(0,str.length-1);    

}

下面的脚本显示了使用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个字符

不要使用已弃用的.substr()!

使用.slice()方法,因为它是跨浏览器兼容的(见IE问题)。 或者使用.substring()方法。

它们在需求上有一些细微的差异,这些差异被正确地记录在:

const id = "ctl03_Tabs1"; console.log (id.slice (5));/ /输出:Tabs1 console.log (id.slice (1));/ /输出:1 //下面是比较慢的 console.log (id.substring (id。长度- 5));/ /输出:Tabs1 console.log (id.substring (id。长度- 1));/ /输出:1

性能

今天2020.12.31我在Chrome v87、Safari v13.1.2和Firefox v84上的MacOs HighSierra 10.13.6上执行测试,以获得最后一个字符大小写(最后N个字母大小写结果,为了清晰起见,我在单独的答案中给出)。

结果

适用于所有浏览器

解D E F是非常快或最快的 解G H是最慢的

细节

我执行2个测试用例:

当字符串有10个字符-你可以在这里运行它 当字符串有1M字符-你可以在这里运行它

下面的代码片段给出了解决方案 一个 B C D E F G (my) H (my)

//https://stackoverflow.com/questions/5873810/how-can-i-get-last-characters-of-a-string // https://stackoverflow.com/a/30916653/860099 function A(s) { return s.substr(-1) } // https://stackoverflow.com/a/5873890/860099 function B(s) { return s.substr(s.length - 1) } // https://stackoverflow.com/a/17489443/860099 function C(s) { return s.substring(s.length - 1, s.length); } // https://stackoverflow.com/a/50395190/860099 function D(s) { return s.slice(-1); } // https://stackoverflow.com/a/50374396/860099 function E(s) { return s.charAt(s.length-1); } // https://stackoverflow.com/a/17489443/860099 function F(s) { return s[s.length-1]; } // my function G(s) { return s.match(/.$/); } // my function H(s) { return [...s].pop(); } // -------------------- // TEST // -------------------- [A,B,C,D,E,F,G,H].map(f=> { console.log( f.name + ' ' + f('ctl03_Tabs1') )}) This shippet only presents functions used in performance tests - it not perform tests itself!

这里是chrome的示例结果

假设你将子字符串与另一个字符串的结尾进行比较,并使用结果作为布尔值,你可以扩展string类来完成这一点:

String.prototype.endsWith = function (substring) {
  if(substring.length > this.length) return false;
  return this.substr(this.length - substring.length) === substring;
};

允许您执行以下操作:

var aSentenceToPonder = "This sentence ends with toad"; 
var frogString = "frog";
var toadString = "toad";
aSentenceToPonder.endsWith(frogString) // false
aSentenceToPonder.endsWith(toadString) // true