Javascript:不使用.split()方法拆分字符串

Javascript: Splitting string without .split( ) method?

本文关键字:方法 拆分 字符串 split Javascript      更新时间:2023-09-26

为了更好地理解函数,有人建议我重构String.protype.split()方法。这不是为了上学,我在自学。我觉得这很直接,但四个小时后,我很沮丧,因为我无法让它发挥作用。到目前为止,我拥有的是:

var myString = "this is a sentence";
var split = function(string, splitParameter) {
var splitArray = [];
var stringElement = "";
var splitter = ""; 
var j = 0;
for (var i = 0; i < string.length; i++) {
  if (string[i] !== splitParameter) {
      stringElement += string[i];
      splitArray[j] = stringElement;
  }else {
      j++;
      splitter += string[i];
  }
  return splitArray;
}

console.log(split(myString," "));

我很难弄清楚如何处理splitParameter参数。当我在上面粘贴的代码中输入"时,我得到了:

["this", "thisis", "thisisa", "thisisasentence"]

当我将splitParameter更改为"时,我得到:

["this is a sentence"]

当我通过"t"时,我得到:

[1: "his a sen", 2: "his is a senence"]

有人能帮我走上正轨吗?我正在努力学习如何从功能上思考问题并使用算法推理,但我对如何处理原始拆分方法的分隔符位一无所知。

谢谢。

嘿,伙计们,我是编程新手,仍在自学,我想分享我对这个问题的理解。很乐意接受对我的解决方案的建议和批评。

let sentence = 'this is a sentence';
const cutString = (sentence, splitParameter) => {
storedString = '';
arrayString = [];
    for (let i = 0; i<sentence.length; i++) {
        if (sentence[i] !== splitParameter) {
            storedString+=sentence[i];  
        } else if (sentence[i] === splitParameter) {
            arrayString.push(storedString);
            storedString = '';
            continue;
        }
    }
    if(storedString !== '') {
        arrayString.push(storedString);
    }
    return arrayString;
}
console.log(cutString(sentence, ' ')); 

let str = "hi ho*w are yo*u";
function split(str, sp){
    let temp = "";
    let splitArray = [];
    for(let i=0; i<str.length; i++){
        if(str[i] != sp){
            temp+= str[i];
            if(str[i+1] == sp || i ==str.length-1){
                splitArray.push(temp);
                temp = "";
            }
        }
    }
    return splitArray;
}
console.log(split(str, "*"));     // return['hi', 'ho*w', 'are', 'yo*u']
console.log(split(str, " "));     // returns ['hi', 'ho*w', 'are' 'yo*u']