繁体   English   中英

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

[英]How can I get last characters of a string

我有

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.length - 5 开始的字符,并且由于省略了 for.substr() 的第二个参数,因此继续到字符串的末尾。

正如其他人在下面指出的那样,您还可以使用.slice()方法。

如果您只是想查找下划线后的字符,则可以使用:

var tabId = id.split("_").pop(); // => "Tabs1"

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

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

您可以使用带有否定开头 position 的substr() 方法来检索最后 n 个字符。 例如,这将获取最后 5 个:

var lastFiveChars = id.substr(-5);

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

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

要获取字符串的一部分,您可以使用substr function 或substring function:

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

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

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

Output:

Tabs1 // 有 5 个字符

1 // 得到 1 个字符

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

结果'3c58'

r.slice(-1)

结果'8'

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

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

所以temp的值是"Tabs1"

查看substring function

获取最后一个字符:

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

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

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"

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

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

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

表现

今天 2020.12.31 我在 Chrome v87、 Safari v13.1.2 和 Firefox v84 上对 MacOs HighSierra 10.13.6 执行测试,以获得最后 N 个字符大小写(最后一个字母大小写结果)

结果

适用于所有浏览器

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

在此处输入图像描述

细节

我执行 2 个测试用例:

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

下面的片段介绍了解决方案A B C D E F G (my)

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

在此处输入图像描述

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

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

但是,如果您需要的不仅仅是一个字符,那么使用 splice 是有效的

x.slice(-5);      //world

关于你的例子

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

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

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

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

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

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


文档: 字符串/at

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

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

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

var last5 = id.substr(-5);

表现

今天 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 个字符时 - 你可以在这里运行它

下面的片段介绍了解决方案A 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.length功能来获取最后一个字符。 请参见以下示例:

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

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

假设您将 substring 与另一个字符串的末尾进行比较并将结果用作 boolean 您可以扩展字符串 class 来完成此操作:

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

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

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

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

我实际上有以下问题,这就是我如何通过上述答案解决它,但是从输入元素中提取 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
        });

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

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

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

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

}

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

你可以使用切片

id.slice(-5);

我相信这会奏效....

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

extension的值为".pdf"

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM