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

我有

var id="ctl03_Tabs1";

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

1353121 次浏览

看看子串函数

获取最后一个字符:

id.substring(id.length - 1, id.length);

编辑:正如其他人所指出的,使用#0而不是#1。但是,请参阅此答案底部的.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"

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

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

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

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

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

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

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

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

输出:

塔布1//有5个字符

1//获取1个字符

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

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

这些是需求上的细微差异,这些差异在以下文件中得到了适当的记录:String.prototype.substring()

const id = "ctl03_Tabs1";
console.log(id.slice(-5)); //Outputs: Tabs1console.log(id.slice(-1)); //Outputs: 1
// below is slowerconsole.log(id.substring(id.length - 5)); //Outputs: Tabs1console.log(id.substring(id.length - 1)); //Outputs: 1

不需要使用substr方法来获取字符串的单个字符!

以Jamon Holmgren为例,我们可以更改substr方法并简单地指定数组位置:

var id = "ctl03_Tabs1";var lastChar = id[id.length - 1]; // => "1"

如果逗号是字符串中的最后一个字符,这个将删除逗号。

var str = $("#ControlId").val();
if(str.substring(str.length-1)==',') {
var stringWithoutLastComma = str.substring(0,str.length-1);
}

我实际上有以下问题,这是我如何通过上述答案的帮助解决的,但从输入元素中提取id的方法不同。

我已附加输入归档与一个

id="rating_element-<?php echo $id?>"

而且,当该按钮单击时,我只想提取id(即数字)或php ID($id)

这就是我所做的。

 $('.rating').on('rating.change', function() {alert($(this).val());// console.log(this.id);var static_id_text=("rating_element-").length;var product_id =  this.id.slice(static_id_text);       //get the length in order to deduct from the whole stringconsole.log(product_id );//outputs the last id appended});

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

var lastFiveChars = id.substr(-5);

假设您将子字符串与另一个字符串的末尾进行比较并将结果用作布尔值,您可以扩展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) // falseaSentenceToPonder.endsWith(toadString) // true

如果你只是想要最后一个字符或任何知道位置的字符,你可以简单地将字符串作为数组!-字符串在javascript中是可迭代的-

Var x = "hello_world";x[0];                    //hx[x.length-1];   //d

然而,如果你需要的不仅仅是一个字符,那么使用拼接是有效的

x.slice(-5);      //world

关于你的例子

"rating_element-<?php echo $id?>"

要提取id,您可以轻松使用拆分+弹出

Id= inputId.split('rating_element-')[1];

这将返回id,如果在'rating_element'之后没有id,则返回未定义:)

var id="ctl03_Tabs1";var res = id.charAt(id.length-1);

我发现了这个问题,通过一些研究,我发现这是获得最后一个字符的最简单方法。

正如其他人提到的,并添加了完整性以获得最后5:

var last5 = id.substr(-5);

一种方法是使用slice,比如如下:

var id="ctl03_Tabs1";var temp=id.slice(-5);

所以temp的值将是"Tabs1"

我相信这将工作…

var string1="myfile.pdf"var esxtenion=string1.substr(string1.length-4)

extension的值将是".pdf"

Substr函数允许您使用减号来获取最后一个字符。

var string = "hello";var last = string.substr(-1);

非常灵活。例如:

// Get 2 characters, 1 character from end// The first part says how many characters// to go back and the second says how many// to go forward. If you don't say how many// to go forward it will include everythingvar string = "hello!";var lasttwo = string.substr(-3,2);// = "lo"

最后5

var id="ctl03_Tabs1";var res = id.charAt(id.length-5)alert(res);

最后

var id="ctl03_Tabs1";var res = id.charAt(id.length-1)alert(res);

要获取字符串的最后一个字符,您可以使用split('').pop()函数。

const myText = "The last character is J";const lastCharater = myText.split('').pop();console.log(lastCharater); // J

它之所以有效,是因为当split('')函数以空(")作为参数时,字符串的每个字符都将更改为数组的一个元素。因此,我们可以使用pop()函数返回该数组的最后一个元素,即“J”字符。

这里有两个例子,将告诉你总是最后一个字符

var id="ctl03_Tabs1";
console.log(id.charAt(id.length - 1));
console.log(id[id.length - 1]); 

性能

今天2020.12.31我在Chromev87,Safariv13.1.2和Firefox v84上对MacO HighSierra 10.13.6进行测试,以获取最后一个字符大小写的选择解决方案(最后N个字母大小写结果,为了清楚起见,我在单独回答中给出)。

搜索结果

对于所有浏览器

  • 解D, E, F相当快或最快
  • 解G, H最慢

输入图片描述

详情

我执行两个测试用例:

  • 当string有10个字符时-您可以运行它这里
  • 当字符串有1M字符时-你可以运行它这里

下面的代码片段提供了解决方案ABCDEFG(my), H(my)

//https://stackoverflow.com/questions/5873810/how-can-i-get-last-characters-of-a-string
// https://stackoverflow.com/a/30916653/860099function A(s) {return s.substr(-1)}
// https://stackoverflow.com/a/5873890/860099function B(s) {return s.substr(s.length - 1)}
// https://stackoverflow.com/a/17489443/860099function C(s) {return s.substring(s.length - 1, s.length);}
// https://stackoverflow.com/a/50395190/860099function D(s) {return s.slice(-1);}
// https://stackoverflow.com/a/50374396/860099function E(s) {return s.charAt(s.length-1);}
// https://stackoverflow.com/a/17489443/860099function F(s) {return s[s.length-1];}
// myfunction G(s) {return s.match(/.$/);}
// myfunction 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!

And here are example results for chrome

enter image description here

性能

今天2020.12.31我在Chromev87,Safariv13.1.2和Firefox v84上对MacO HighSierra 10.13.6进行测试,以获取最后N个字符大小写的选定解决方案(最后一个字母大小写结果,为了清楚起见,我在单独回答中给出)。

搜索结果

对于所有浏览器

  • 基于slice的解决方案D是快速或最快的
  • 解G最慢

在此处输入图片描述

详情

我执行两个测试用例:

  • 当string有10个字符时-您可以运行它这里
  • 当字符串有1M字符时-你可以运行它这里

下面的代码片段提供了解决方案ABCDEFG(我的)

//https://stackoverflow.com/questions/5873810/how-can-i-get-last-characters-of-a-string
// https://stackoverflow.com/a/30916653/860099function A(s,n) {return s.substr(-n)}
// https://stackoverflow.com/a/5873890/860099function B(s,n) {return s.substr(s.length - n)}
// https://stackoverflow.com/a/17489443/860099function C(s,n) {return s.substring(s.length - n, s.length);}
// https://stackoverflow.com/a/50395190/860099function D(s,n) {return s.slice(-n);}
// https://stackoverflow.com/a/50374396/860099function 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/860099function F(s,n) {let i = s.length-n;let r = '';while(i<s.length) r += s[i++];return r}
// myfunction 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!

And here are example results for chrome

enter image description here

const id = 'ctl03_Tabs1';id.at(-1); // Returns '1'

at支持从最后一个字符串字符倒数的负整数。


文档:字符串/at

您可以利用string.length功能获取最后一个字符。请参阅下面的示例:

let str = "hello";console.log(str[str.length-1]);// Output : 'o' i.e. Last character.

类似地,您可以使用for循环使用上述代码来反转字符串。

const r = '6176958e92d42422203a3c58';r.slice(-4)

结果'3c58'

r.slice(-1)

结果'8'

你可以使用切片

id.slice(-5);

const id = "ctl03_Tabs1";
console.log(id.slice(-5)); //Outputs: Tabs1console.log(id.slice(0,4)); //Outputs: ctl0