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

时间:2011-05-03 18:12:18

标签: javascript

我有

var id="ctl03_Tabs1";

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

22 个答案:

答案 0 :(得分:961)

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

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

答案 1 :(得分:734)

请勿使用.substr()。请改用.slice()方法,因为它与浏览器兼容(请参阅IE)。

var id = "ctl03_Tabs1";
id.slice(-5); //Outputs: Tabs1
id.slice(-1); //Outputs: 1

substr() with negative value not working in IE

答案 2 :(得分:57)

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

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

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

答案 3 :(得分:49)

您可以使用具有负起始位置的substr() method来检索最后n个字符。例如,这得到了最后的5:

var lastFiveChars = id.substr(-5);

答案 4 :(得分:21)

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

答案 5 :(得分:7)

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

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

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

答案 6 :(得分:7)

查看substring function

获取最后一个角色:

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

答案 7 :(得分:4)

性能

今天 2020.12.31,我在 Chrome v87、Safari v13.1.2 和 Firefox v84 上对 MacOs HighSierra 10.13.6 进行测试,以获取用于获取最后 N 个字符大小写的选定解决方案(最后一个字母大小写结果,为了清楚起见,我在 {{3 }}).

结果

适用于所有浏览器

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

separate answer

详情

我执行了 2 个测试用例:

  • 当字符串有 10 个字符时 - 您可以运行它 enter image description here
  • 当字符串有 1M 个字符时 - 您可以运行它 HERE

下面的代码片段提供了解决方案 HERE A B C D E 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 的示例结果

F

答案 8 :(得分: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

答案 9 :(得分:2)

如果你只想要知道位置的最后一个字符或任何字符,你可以简单地将字符串作为一个数组来传递! - 字符串在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 :)

答案 10 :(得分:1)

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

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

同样,您可以使用 for 循环使用上述代码反转字符串。

答案 11 :(得分:1)

性能

今天 2020.12.31,我在 Chrome v87、Safari v13.1.2 和 Firefox v84 上对 MacOs HighSierra 10.13.6 进行测试,以获取用于获取最后一个字符大小写的选定解决方案(最后 N 个字母大小写结果,为了清楚起见,我在 {{3 }}).

结果

适用于所有浏览器

  • 解决方案 D、E、F 相当快或最快
  • 解决方案 G、H 最慢

separate answer

详情

我执行了 2 个测试用例:

  • 当字符串有 10 个字符时 - 您可以运行它 enter image description here
  • 当字符串有 1M 个字符时 - 您可以运行它 HERE

下面的代码片段提供了解决方案 HERE A B C D E G(我的),H(我的)

//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 的示例结果

F

答案 12 :(得分:1)

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

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

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

答案 13 :(得分:0)

我确定这可以。...

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

extension的值为".pdf"

答案 14 :(得分:0)

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

var string = "hello";
var last = string.substring(-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"

答案 15 :(得分: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);

答案 16 :(得分:0)

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

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

因此temp的值为"Tabs1"

答案 17 :(得分:0)

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

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

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

var last5 = id.substr(-5);

答案 18 :(得分: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
        });

答案 19 :(得分:0)

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

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


文档:String/at

注意:实验性功能!支持将在 Chrome v90 落地。

答案 20 :(得分:0)

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

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

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

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

}

答案 21 :(得分:-1)

这里有2个示例将始终向您显示最后一个字符

var id="ctl03_Tabs1";

console.log(id.charAt(id.length - 1)); 

console.log(id[id.length - 1]);