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

Posted

技术标签:

【中文标题】如何获取字符串的最后一个字符?【英文标题】:How to get the last character of a string? 【发布时间】:2011-04-22 12:40:31 【问题描述】:

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

"linto.yahoo.com."

这个字符串的最后一个字符是"."

我怎样才能找到这个?

【问题讨论】:

【参考方案1】:
str.charAt(str.length - 1)

某些浏览器允许(作为非标准扩展)您将其缩短为:

str[str.length - 1];

【讨论】:

过时的答案。使用括号表示法不是非标准扩展。【参考方案2】:

你可以像这样得到最后一个字符:

var lastChar=yourString.charAt(yourString.length-1);

【讨论】:

【参考方案3】:

使用charAt:

charAt() 方法返回字符串中指定索引处的字符。

您可以将此方法与字符串的length 属性结合使用,以获取该字符串中的最后一个字符。 例如:

const myString = "linto.yahoo.com.";
const stringLength = myString.length; // this will be 16
console.log('lastChar: ', myString.charAt(stringLength - 1)); // this will be the string

【讨论】:

【参考方案4】:

使用 javascript charAt 函数在给定的 0 索引位置获取字符。使用length 找出字符串的长度。你想要最后一个字符,所以它是长度 - 1。 示例:

var word = "linto.yahoo.com.";
var last = word.charAt(word.length - 1);
alert('The last character is:' + last);

【讨论】:

【参考方案5】:

一个优雅而简短的替代方法是String.prototype.slice 方法。

就在:

str.slice(-1);

负开始索引将字符串从length+index 切分到length,即索引-1,提取最后一个字符:

"abc".slice(-1); // "c";

【讨论】:

旁注:数组也有一个slice() 方法。 - 它们的功能在概念上是相似的(部分副本)--------(以防万一您正在阅读代码并查看.slice() “UTF-8 字符串”是什么意思?这句话毫无意义。不过 FWIW,JavaScript 字符串本身就是有趣的野兽:它们是无符号 16 位整数值的序列。如果您的字符串的目的是存储字符,那么上面的代码将返回最后一个 16 位值,如果它是代理对的第二部分,这将不是很漂亮。但是,“UTF-8 字符串”到底是什么意思? UTF-8 是一种编码方案,如果您有一个字节数组,它可能会有意义,但对于字符串则毫无意义。只是好奇。 @Egg,看来你没有尝试我的例子,str.slice(-1) 确实得到了字符串的最后一个字符(根据 OP 要求),就像你使用了str.charAt(str.length - 1) 一样,试试:"abc".slice(-1)。我在这里展示了带有负索引的String.prototype.slice 的用法。 str.slice(-n) 将获取原始字符串的最后一个 n 字符作为新的字符串值。更多信息:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… @CMS 你是对的,你的方法实际上是抓取字符串的最后一个字符而不修剪它。也不错的优雅方法。出于某种原因,我认为它会修剪这些字符并返回一个修剪后的字符串。很抱歉,我觉得自己像个白痴一样没有先尝试。 这段代码可能很短而且很“性感”,但我不会使用它。代码不是自我解释的,也不清楚。请改用 charAt。【参考方案6】:

将substr与参数-1一起使用:

"linto.yahoo.com.".substr(-1);

等于“。”

注意:

要从字符串末尾提取字符,请使用负数开始数字(这在 IE 8 和更早版本中不起作用)。

【讨论】:

这个好像和 slice() 一样短,不知道哪个更好更快。 substr 是一项遗留功能,在 Web 浏览器之外是可选的。切片更好。【参考方案7】:
var firstName = "Ada";
var lastLetterOfFirstName = firstName[firstName.length - 1];

【讨论】:

虽然这段代码 sn-p 可以解决问题,including an explanation 确实有助于提高您的帖子质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性的 cmets 挤满你的代码,这会降低代码和解释的可读性!【参考方案8】:

您可以使用不同的方式但具有不同的性能来实现这一目标,

1.使用括号表示法:

var str = "Test"; var lastLetter = str[str.length - 1];

但不建议使用括号。查看原因here

2。 charAt[index]:

var lastLetter = str.charAt(str.length - 1)

这是可读且最快的。这是最推荐的方式。

3.子字符串:

str.substring(str.length - 1);

4.切片:

str.slice(-1);

比子串略快。

您可以查看性能here

使用 ES6:

你可以使用str.endsWith("t");

但 IE 不支持。查看更多关于endsWith的详细信息here

【讨论】:

无需在当前机器上进行性能压缩。使用最简洁的解决方案。我的投票是str.slice(-1); 我不知道 endsWith 在这里如何适应,这完全不同。 Re: 括号符号 (BN) 1/ 这是 2022,螺丝 IE7。 2/ 尝试put BN 字符的编码人员不应编码。【参考方案9】:

试试这个...

const str = "linto.yahoo.com."
console.log(str.charAt(str.length-1));

【讨论】:

【参考方案10】:

您可以使用以下内容。在这种最后一个字符的情况下,这是一个矫枉过正,但对于一个子字符串,它很有用:

var word = "linto.yahoo.com.";
var last = ".com.";
if (word.substr(-(last.length)) == last)
alert("its a match");

【讨论】:

【参考方案11】:

一个简单的方法就是使用这个:)

var word = "waffle"
word.endsWith("e")

【讨论】:

对 ES6 的很好的补充,但是如果你必须支持它,它在 IE 中不起作用,它可以是 polyfilled。 我根本不明白这是如何回答这个问题的,获取字符串的最后一个字符与检查它是否匹配特定字符完全不同。 不是这个问题的答案。 如果没有回答问题,不确定它是如何获得 20 票的。 OP 想要获取最后一个字符,在本例中为 "e"。另一方面,endsWith 检查单词是否以字符串结尾。在这种情况下根本没用。【参考方案12】:

你可以使用这个简单的 ES6 方法

const lastChar = (str) => str.split('').reverse().join(',').replace(',', '')[str.length === str.length + 1 ? 1 : 0];


// example
console.log(lastChar("linto.yahoo.com."));

这适用于所有浏览器。

【讨论】:

如果原始字符串中有逗号 -1 将不起作用 太复杂了。如果要将其转换为数组并反转它,为什么不直接使用(str) => str.split('').reverse()[0]? :) 有些人不懂二度【参考方案13】:

如果您有或已经在使用 lodash,请改用last:

_.last(str);

它不仅比普通 JS 更简洁明了,而且更安全,因为它在输入为 nullundefined 时避免了 Uncaught TypeError: Cannot read property X of undefined,因此您无需事先检查:

// Will throws Uncaught TypeError if str is null or undefined
str.slice(-1); // 
str.charAt(str.length -1);

// Returns undefined when str is null or undefined
_.last(str);

【讨论】:

重要的是要注意,这可能会导致您遇到其他问题,例如当它真正返回未定义时期望它返回一个字符串。这在某些情况下可能很有用,但通常最好只使用try...catch【参考方案14】:

var string = "Hello";
var fg = string.length;
fg = fg - 1;
alert(string[fg]);

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。 这似乎是不必要的冗长。【参考方案15】:
**// * get the last 2 letter from string**

console.log('Hey'.slice(-2));

【讨论】:

这在其他答案中已经提到了。

以上是关于如何获取字符串的最后一个字符?的主要内容,如果未能解决你的问题,请参考以下文章

Python如何获取字符串中最后一个特殊字符后的字符串

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

sap 如何获取字符串最后一位

js中如何获取一个字符串最后一个字符?

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

Bash - 如何获取位置参数的最后一个字符?