当前位置:首页 > JavaScript

js实现split

2026-03-14 23:45:41JavaScript

实现 JavaScript 的 split 方法

JavaScript 的 split 方法用于将字符串分割成子字符串数组。以下是手动实现该功能的几种方法:

基础实现

通过循环遍历字符串,根据分隔符拆分字符串:

function customSplit(str, separator, limit) {
  const result = [];
  let current = '';
  let count = 0;

  for (let i = 0; i < str.length; i++) {
    if (separator === '' && current !== '') {
      result.push(current);
      current = '';
      count++;
      if (limit && count >= limit) break;
    }

    if (str[i] === separator && separator !== '') {
      result.push(current);
      current = '';
      count++;
      if (limit && count >= limit) break;
    } else {
      current += str[i];
    }
  }

  if (current !== '' && (!limit || count < limit)) {
    result.push(current);
  }

  return result;
}

使用正则表达式

利用正则表达式处理复杂的分隔符情况:

function customSplitRegex(str, separator, limit) {
  const regex = new RegExp(separator);
  const result = [];
  let start = 0;
  let count = 0;

  for (let i = 0; i < str.length; i++) {
    if (regex.test(str[i])) {
      result.push(str.substring(start, i));
      start = i + 1;
      count++;
      if (limit && count >= limit) break;
    }
  }

  if (start < str.length && (!limit || count < limit)) {
    result.push(str.substring(start));
  }

  return result;
}

处理空分隔符

空分隔符会将字符串拆分为单个字符:

function customSplitEmpty(str, limit) {
  const result = [];
  for (let i = 0; i < str.length; i++) {
    result.push(str[i]);
    if (limit && i >= limit - 1) break;
  }
  return result;
}

完整实现

结合上述方法处理各种情况:

js实现split

function fullCustomSplit(str, separator, limit) {
  if (separator === undefined) return [str];
  if (typeof separator !== 'string' && !(separator instanceof RegExp)) {
    separator = String(separator);
  }

  if (separator === '') return customSplitEmpty(str, limit);
  if (separator instanceof RegExp) return customSplitRegex(str, separator, limit);
  return customSplit(str, separator, limit);
}

注意事项

  • 原生 split 方法支持正则表达式作为分隔符,上述代码中的正则处理是简化版。
  • 如果分隔符未找到,返回包含原字符串的数组。
  • limit 参数限制返回数组的长度。

标签: jssplit
分享给朋友:

相关文章

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数: fun…