如何在JavaScript中删除字符串的最后一个字符?5种最佳方法

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

如何在JavaScript中删除字符串的最后一个字符?面向新手和专家的逐步指南



您是否曾遇到过需要去掉字符串末尾多余逗号、删除句点或直接“截掉”最后一个字符的情况?这个问题在Stack Overflow上可是热门话题,拥有数十万次浏览量。这并不奇怪:字符串操作是90%前端开发的基础。



在本文中,我们不仅会给出干巴巴的答案。我们将深入分析5种实用方法,揭示其中的陷阱,并教您如何为每项任务选择正确的工具。开始吧!



为什么这很重要?三个真实场景



在深入代码之前,让我们先设想一下您肯定需要删除JavaScript字符串最后一个字符的场景:



  • 格式化列表:您通过join(', ')将数组拼接成字符串,但末尾留下了一个多余的逗号。
  • 处理URL:在发送到服务器之前,需要去掉地址末尾的斜杠。
  • 处理ID:需要从类似"item-123-"的字符串中删除最后一个连字符。


听起来很熟悉?那我们就开始分析在JavaScript中删除最后一个字符的方法吧。



方法一:slice() — 简单与速度之王



这是最流行且最直观的方法。slice()方法返回一个新数组(或字符串),从指定位置复制元素。



let str = "Привет, мир!";let result = str.slice(0, -1);console.log(result); // "Привет, мир"


它是如何工作的?slice(0, -1)的意思是:“从索引0开始取所有字符,并在距离末尾1个字符处停止”。JavaScript中的负索引是从字符串末尾开始计数。简洁而巧妙!



slice()的优缺点:

  • 优点:同时适用于字符串和数组。不修改原始字符串。
  • 优点:在95%的情况下是最快的方法(根据JSperf测试)。
  • 缺点:不适合需要删除的不是最后一个字符,而是最后3个字符的情况。


专业建议:将slice()作为主要工具使用。这是行业标准。


方法二:substring() — 老而可靠的朋友



substring()方法与JavaScript同龄。它的工作方式类似,但有一个重要区别:它不理解负索引,而是直接将其转换为0。



let str = "JavaScript";// 要删除最后一个字符,需要知道长度let result = str.substring(0, str.length - 1);console.log(result); // "JavaScrip"


看到了吗?必须计算字符串的长度。这不太方便,但历史上substring()在旧代码(遗留代码)中经常出现。



何时使用substring?

  • 如果您需要支持非常旧的浏览器(IE 8及以下——但这很少见)。
  • 如果您在编写教学代码,并希望明确展示索引操作的逻辑。


重要提示:如果第一个参数大于第二个参数,substring()会交换它们的位置。而slice()在这种情况下会返回空字符串。请务必小心!



方法三:substr() — 已弃用但依然存在



是的,substr()在ECMAScript规范中已被正式标记为弃用(deprecated)。但您仍然会在GitHub上数百万行代码中看到它。



let str = "Удалить!";let result = str.substr(0, str.length - 1);console.log(result); // "Удалить"


与substring()的区别在于,第二个参数是提取部分的长度,而不是结束索引。有点混乱?确实有一点。



是否应该使用substr()

博客

书籍推荐