js实现split
实现 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;
}
完整实现
结合上述方法处理各种情况:

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参数限制返回数组的长度。






