【问题标题】:Javascript: Splitting string without .split( ) method?Javascript:在没有 .split() 方法的情况下拆分字符串?
【发布时间】:2015-05-26 08:28:36
【问题描述】:

为了更好地理解函数,我被建议重构 String.prototype.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"]

有人可以帮助我走上正轨吗?我正在尝试学习如何在功能上思考事物并使用算法推理,但我无法对原始拆分方法的分隔符位做什么做出正面或反面。

谢谢。

【问题讨论】:

  • 如果目标是学习,你最好继续使用它。使用浏览器内置的调试器提供帮助;这样,您可以一次执行每一行代码,查看变量的值等。
  • @phizzy 检查这个小提琴jsfiddle.net/ec56xw8L
  • 您永远不会将stringElement 重置为循环中的空字符串。这样做,它会起作用的。
  • 请注意,真正的.split() 方法也可以拆分字符串(不是单个字符)和正则表达式。但我想这超出了你的锻炼范围。
  • 如果你想复制真正拆分的功能,你可能想看看real specification algorithm

标签: javascript function methods split refactoring


【解决方案1】:

大家好,我是编程新手,还在学习自己,想分享我对这个问题的理解。乐意接受对我的解决方案的建议和批评。

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, ' ')); 

【讨论】:

    【解决方案2】:

    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']

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      相关资源
      最近更新 更多