JavaScript 实现 substring 的三种常见方案

作者:纸飞机时间:2026-10-29 16:34:13浏览:308

本文介绍了在 JavaScript 中手动实现 substring 功能的三种不同方案。第一种利用 charAt 逐个提取字符;第二种将字符串转为数组后使用 slice 截取;第三种通过移除首尾多余部分来保留中间内容。文章提供了完整的代码示例及测试用例,帮助开发者理解不同实现方式的逻辑与适用场景。

JavaScript 实现 substring 的三种常见方案

近期遇到一道编程题:“如何利用 JavaScript 实现 string 的 substring 方法?”基于此,我总结了以下三种可行的实现思路: 第一种方案:通过 charAt 逐个提取所需字符:


String.prototype.mysubstring=function(beginIndex,endIndex){
  var str=this,
    newArr=[];
  if(!endIndex){
    endIndex=str.length;
  }
  for(var i=beginIndex;i<endIndex;i++){
    newArr.push(str.charAt(i));
  }
  return newArr.join("");
}

//test
"Hello world!".mysubstring(3);//"lo world!"
"Hello world!".mysubstring(3,7);//"lo w"

第二种方案:将字符串转换为数组,再截取指定部分:


String.prototype.mysubstring=function(beginIndex,endIndex){
  var str=this,
    strArr=str.split("");
  if(!endIndex){
    endIndex=str.length;
  }
  return strArr.slice(beginIndex,endIndex).join("");
}

//test
console.log("Hello world!".mysubstring(3));//"lo world!"
console.log("Hello world!".mysubstring(3,7));//"lo w"


第三种方案:提取首尾多余部分,利用 replace 将其替换为空字符串。该方法适用于 beginIndex 较小且字符串长度减去 endIndex 也较小的情况:


String.prototype.mysubstring=function(beginIndex,endIndex){
  var str=this,
    beginArr=[],
    endArr=[];
  if(!endIndex){
    endIndex=str.length;
  }
  for(var i=0;i<beginIndex;i++){
    beginArr.push(str.charAt(i));
  }
  for(var i=endIndex;i<str.length;i++){
    endArr.push(str.charAt(i));
  }
  return str.replace(beginArr.join(""),"").replace(endArr.join(""),"");
}

//test
console.log("Hello world!".mysubstring(3));//"lo world!"
console.log("Hello world!".mysubstring(3,7));//"lo w"

以上三种 JavaScript 实现 string 的 substring 方法供各位参考。大家可以尝试运行并比较哪种方式更符合实际需求。希望本文的内容能对大家的学习有所帮助。

作者最新文章