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


Answers:


1085

编辑:正如其他人指出的那样,请使用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"

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


5
第一个解决方案可以变得更短,更快,请参阅下面的答案。但是,我确实同意这种特殊情况下的分裂和流行的想法。
特伦斯

3
.slice(-5)和.substr(length -5)相比.split().pop()性能受到很大影响。如果这是您在循环中使用的内容,并且性能至关重要,则需要牢记这一点。
nwayve

7
在您的测试中,.split().pop()仍然是每秒500万次操作。在性能问题之前,这不是性能问题。;)
Jamon Holmgren 2014年

1
@HutchMoore你是正确的。我已经编辑了答案,以提及这slice是一个更好的选择。
Jamon Holmgren

1
如果您要申请slicesubstr使用数字(int),请先将其转换为字符串。例如myVar.toString().slice(-5)
-dnns

803

不要使用.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中不起作用


6
是的,切片接受负值,这很棒!slice()参考:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…–
Offirmo

3
我更喜欢这个答案,尽管可以接受。
戴夫·沃茨

3
这应该是答案,以这种方式使用slice的性能也更高:jsperf.com/slice-vs-substr-and-length
thevinchi

Chrome 55似乎认为substr快20%
fantapop

6
我认为切片只有在其一致的情况下才能起作用?如果结束了_Tabs15怎么办?slice(-5)只会抓abs15?分流/流行音乐在各种长度下的效果都更好……
Brian Ramsey

65

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

var lastFiveChars = id.substr(-5);

最佳答案和简短答案。无需知道原始字符串长度(对于当前的浏览器,因此我们不包括IE)
Thanh Trung

60

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

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,它是字符切片应在何处结束的索引。


1
您有错别字应该是错误的
乔治

24

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


4
与IE不兼容,请参阅我的答案。
特伦斯


7

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

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

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

5

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 everything
var string = "hello!";
var lasttwo = string.substr(-3,2);
// = "lo"

4

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

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

所以的价值temp"Tabs1"


3

如果您只希望最后一个字符或任何已知位置的字符,您都可以将字符串当作数组来处理!-字符串在javascript中是可迭代的-

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

但是,如果您只需要一个字符,那么使用拼接是有效的

x.slice(-5);      //world

关于你的例子

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

要提取ID,您可以轻松使用split + pop

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

这将返回id;如果在'rating_element'之后没有id,则返回undefined:


2

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

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

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

正如其他人提到的那样,为了完整起见,添加了最后5个:

var last5 = id.substr(-5);

0

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

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

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

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

}

4
这几乎与原始问题无关。
silasjmatson

0

我实际上有以下问题,这就是我如何通过上述答案解决的方法,但提取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 string    
          console.log(product_id );//outputs the last id appended
        });

0

最后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);


对于第一个示例,更改charAtsubstr。这charAt得到第五,从倒数

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.