没有任何内置函数的分割字符串

时间:2019-03-27 00:37:06

标签: javascript loops

我需要一个类似split

的函数

var string = "a|b|c" console.log(string.split('|'))

获取字符串并使用循环将其拆分

function splitstr(str, charToSplit){

      }

我希望('a|b|c', '|')的输出为["a", "b", "c"]

2 个答案:

答案 0 :(得分:3)

这是一个可以正常工作的简单解决方案:

function splitStr(str, separator) {
  const parts = [];
  let nextPart = '';
  for (let i = 0; i <= str.length; i++) {
    if (str[i] === separator || i === str.length) {
      parts[parts.length] = nextPart;
      nextPart = '';
    } else {
      nextPart += str[i]
    }
  }
  return parts;
}

console.log(splitStr("abc|abcd|ac", "|"));

答案 1 :(得分:1)

您可以使用下面的代码。

此代码有8个步骤。

  1. 遍历字符串
  2. 检查当前项目是否等于charToSplit
  3. 如果是,它将在startIndex和当前索引(不包括当前索引,即您要分割的字符)之间循环遍历
  4. 它首先将output[currentIndex]的值设置为空字符串(因为在不存在的内容上使用+=不能正常工作
  5. 然后将您当前的字母添加到output
  6. startIndex设置为当前索引+ 1(这是您要分割的字符之后的字符)
  7. 由于您现在处于下一组值中,因此
  8. currentIndex会增加1。
  9. 最后,代码返回output

注意:第一个循环之后的最后一个额外循环将最后一个值添加到您的output数组中。

function splitstr(str, charToSplit) {
  var output = [];
  var currentIndex = 0;
  var startIndex = 0;

  for (var i = 0; i < str.length; i++) {
    if (str[i] == charToSplit) {
      output[currentIndex] = "";
      for (var x = startIndex; x < i; x++) {
        output[currentIndex] += str[x];
      }
      startIndex = i + 1;
      currentIndex++;
    }
  }
  output[currentIndex] = "";
  for (var i = startIndex; i < str.length; i++) {
    output[currentIndex] += str[i];
  }

  return output;
}

console.log(splitstr("abc|abcd|ac", "|"));