如何获取字符串的最后一个字符?
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 更简洁明了,而且更安全,因为它在输入为 null
或 undefined
时避免了 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));
【讨论】:
这在其他答案中已经提到了。以上是关于如何获取字符串的最后一个字符?的主要内容,如果未能解决你的问题,请参考以下文章