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

Lin*_*P D 480 javascript

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

"linto.yahoo.com."
Run Code Online (Sandbox Code Playgroud)

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

我怎么能找到这个?

CMS*_*CMS 938

String.prototype.slice方法是一种优雅而短暂的选择.

只是:

str.slice(-1);
Run Code Online (Sandbox Code Playgroud)

负起始索引将字符串从length+index,length索引切换为索引-1,提取最后一个字符:

"abc".slice(-1); // "c";
Run Code Online (Sandbox Code Playgroud)

  • @CMS你是对的,你的方法确实抓住字符串的最后一个字符而不修剪它.也很好的方法.出于某种原因,我认为它会削减这些字符并返回一个修剪过的字符串.对不起,我觉得自己不是第一个尝试它的白痴. (9认同)
  • 旁注:数组也有[`slice()`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice)方法. - 它们的功能在概念上是相似的(部分副本)--------(以防万一你正在阅读代码并看到`.slice()`) (7认同)
  • @Egg,似乎你没有尝试我的例子,`str.slice(-1)`确实得到了字符串的最后一个字符(如所需的OP),就好像你使用了`str.charAt(str.长度 - 1)`,尝试:`"abc".slice(-1)`.我在这里展示了带有负索引的`String.prototype.slice`的用法.`str.slice(-n)`将原始字符串的最后一个`n`字符作为新的字符串值.更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice (6认同)
  • Downvoted,因为这不回答这个问题.它假设用户想要删除角色,但是如果你需要捕获最后一个角色并根据它是什么来回应怎么办?str.charAt()答案是正确的. (4认同)
  • 这段代码可能很短并且“性感”,但我不会使用它。该代码不言自明且不清楚。请改用 charAt。 (3认同)
  • “UTF-8 字符串”是什么意思?这句话毫无意义。尽管如此,JavaScript 字符串本身就是一个有趣的野兽:它们是无符号 16 位整数值的序列。如果您的字符串的目的是存储字符,那么上面的代码将返回最后一个 16 位值,如果它是代理对的第二部分,这将不会很漂亮。但同样,“UTF-8 字符串”究竟是什么意思?UTF-8 是一种编码方案,如果您有一个字节数组,它可能有意义,但在涉及字符串时则毫无意义。只是好奇。 (2认同)

Don*_*nut 88

用途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
Run Code Online (Sandbox Code Playgroud)

  • 最快的http://jsperf.com/splice-1-vs-charat-lenght-1-vs-index (13认同)

Mat*_*hen 61

str.charAt(str.length - 1)
Run Code Online (Sandbox Code Playgroud)

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

str[str.length - 1];
Run Code Online (Sandbox Code Playgroud)

  • 过时的答案。使用括号表示法不是非标准扩展。 (4认同)

Cod*_*ode 45

您可以使用不同的方式实现此目的,但性能不同,

1.使用括号表示法:

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

但不建议使用括号.在这里查看原因

2. charAt [index]:

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

这是可读和最快的.这是最推荐的方式.

子串:

str.substring(str.length - 1);

切片:

str.slice(-1);

它比子串略快.

你可以在这里查看表现

  • 无需在当前机器上进行性能压缩。使用最简洁的解决方案。我的投票是“str.slice(-1);” (3认同)
  • 我不确定 `endsWith` 在这里如何适合,它的作用完全不同。 (3认同)

Spi*_*ynn 37

使用带参数-1的substr:

"linto.yahoo.com." SUBSTR(-1).

等于 "."

注意:

要从字符串末尾提取字符,请使用负起始编号(这在IE 8及更早版本中不起作用).

  • 看起来这个像slice()一样短,我想知道哪一个更好更快. (3认同)

Ran*_*ner 29

使用该String.prototype.at()方法是一种新的实现方式

const s = "linto.yahoo.com.";
const last = s.at(-1);

console.log(last);
Run Code Online (Sandbox Code Playgroud)

阅读更多有关


小智 14

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

var word = "waffle"
word.endsWith("e")
Run Code Online (Sandbox Code Playgroud)

  • 漂亮而简单+1 (2认同)
  • ES6 的一个很好的补充,但如果你必须支持它,它在 IE 中不起作用,它可以是 [polyfill](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects /String/endsWith#Polyfill)。 (2认同)

Vis*_*hal 8

尝试这个...

const str = "linto.yahoo.com."
console.log(str.charAt(str.length-1));
Run Code Online (Sandbox Code Playgroud)


Col*_*ert 7

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

var lastChar=yourString.charAt(yourString.length-1);
Run Code Online (Sandbox Code Playgroud)


Sal*_*lar 7

var firstName = "Ada";
var lastLetterOfFirstName = firstName[firstName.length - 1];
Run Code Online (Sandbox Code Playgroud)


Ada*_*dam 5

使用 JavaScript charAt函数获取给定 0 索引位置处的字符。使用length来找出字符串的长度。您想要最后一个字符,因此长度为 - 1。示例:

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


xlm*_*xlm 5

如果您已经或正在使用 lodash,请使用last代替:

_.last(str);
Run Code Online (Sandbox Code Playgroud)

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

_.last(str);
Run Code Online (Sandbox Code Playgroud)