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

调用自定义stringSplit方法时出现‘str.stringSplit is not a function’错误的求助

调用自定义stringSplit方法时出现‘str.stringSplit is not a function’错误的求助

嘿,我来帮你看看这个问题~ 你遇到的str.stringSplit is not a function错误,原因其实很直观:

你当前定义的stringSplit是一个独立的普通函数,并不是JavaScript中String对象的原型方法,所以不能直接用字符串实例str去调用它(也就是str.stringSplit()这种写法不成立)。

下面给你两种解决思路,还顺便补全了你原函数中缺失的逻辑(原函数只处理了分隔符为空的情况,其他场景没有返回值):

方案一:直接调用普通函数

把字符串和分隔符作为参数传入函数即可,这是最直接的修改方式:

const str = '7The quick 8brown jhbjhb 78646845fox jum56ps.';

function stringSplit(str, delimiter) {
  var substrings = [];
  // 处理分隔符为空的情况
  if (delimiter === '') {
    for (var i = 0; i < str.length; i++) {
      substrings.push(str[i]);
    }
    return substrings;
  }
  // 补充分隔符不为空的处理逻辑
  let currentSubstring = '';
  const delimiterStr = String(delimiter); // 统一转为字符串,避免类型问题
  for (var j = 0; j < str.length; j++) {
    const char = str[j];
    if (char === delimiterStr) {
      substrings.push(currentSubstring);
      currentSubstring = '';
    } else {
      currentSubstring += char;
    }
  }
  // 把最后一段未分割的内容加入数组
  substrings.push(currentSubstring);
  return substrings;
}

// 直接调用函数,传入目标字符串和分隔符
console.log(stringSplit(str, 7));

方案二:转为String原型方法

如果你想保留str.stringSplit()这种调用形式,可以把函数挂载到String的原型上,这样所有字符串实例都能使用这个方法:

const str = '7The quick 8brown jhbjhb 78646845fox jum56ps.';

// 将方法挂载到String原型
String.prototype.stringSplit = function(delimiter) {
  var substrings = [];
  const str = this; // this指向调用该方法的字符串实例
  // 处理分隔符为空的情况
  if (delimiter === '') {
    for (var i = 0; i < str.length; i++) {
      substrings.push(str[i]);
    }
    return substrings;
  }
  // 补充分隔符不为空的处理逻辑
  let currentSubstring = '';
  const delimiterStr = String(delimiter);
  for (var j = 0; j < str.length; j++) {
    const char = str[j];
    if (char === delimiterStr) {
      substrings.push(currentSubstring);
      currentSubstring = '';
    } else {
      currentSubstring += char;
    }
  }
  substrings.push(currentSubstring);
  return substrings;
}

// 现在可以用字符串实例直接调用方法了
console.log(str.stringSplit(7));

备注:内容来源于stack exchange,提问作者adila maloul

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 15:10:32