You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写移除字符串中数字的JavaScript函数?新手求助

问题排查与解决方案

错误原因

你的代码核心问题出在条件判断的逻辑运算符上:
你用了||(逻辑或),这意味着只要当前字符不等于0-9中的某一个数字,条件就成立。但任何字符(包括数字本身)都不可能同时等于所有0-9的数字,所以这个条件永远为真,所有字符都会被保留,最终返回原字符串。

修正后的基础版本

把||替换成&&(逻辑与),表示当前字符同时不等于所有0-9的数字时,才将其加入结果数组:

function removeNumbers(str) {
  let arr = [];
  for (let i = 0; i < str.length; i++) {
    if (
      str[i] != '0' &&
      str[i] != '1' &&
      str[i] != '2' &&
      str[i] != '3' &&
      str[i] != '4' &&
      str[i] != '5' &&
      str[i] != '6' &&
      str[i] != '7' &&
      str[i] != '8' &&
      str[i] != '9'
    ) {
      arr.push(str[i]);
    }
  }
  return arr.join("");
}

更简洁的优化方案

针对这个需求,还有更适合新手的简洁实现方式:

  1. 正则表达式替换:直接匹配所有数字并替换为空字符串,一行代码搞定:
function removeNumbers(str) {
  return str.replace(/[0-9]/g, '');
}

/[0-9]/g是正则表达式,[0-9]匹配0到9的任意数字,g表示全局替换(处理所有符合条件的数字),替换成空字符串就完成了数字移除。

  1. isNaN判断法:利用isNaN()函数判断字符是否为非数字:
function removeNumbers(str) {
  let arr = [];
  for (let i = 0; i < str.length; i++) {
    if (isNaN(str[i])) {
      arr.push(str[i]);
    }
  }
  return arr.join("");
}

isNaN(str[i])会在字符不是数字时返回true,此时将字符加入结果数组即可。

内容的提问来源于stack exchange,提问作者Xjrlx00

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 05:52:37