在 JavaScript 中获取字符串的所有子字符串

新手上路,请多包涵

我有以下函数来从 JavaScript 中的字符串中获取所有子字符串。我知道这是不正确的,但我觉得我正在以正确的方式去做。任何建议都会很棒。

  var theString     = 'somerandomword',
     allSubstrings = [];

getAllSubstrings(theString);

function getAllSubstrings(str) {

  var start = 1;

  for ( var i = 0; i < str.length; i++  ) {

     allSubstrings.push( str.substring(start,i) );

  }

}

console.log(allSubstrings)

编辑:如果我的问题不清楚,我们深表歉意。我所说的子字符串是指字符串中字母的所有组合(不一定是实际单词)所以如果字符串是“abc”,你可以有 [a, ab, abc, b, ba, bac etc…] 谢谢对于所有的回应。

原文由 user2085143 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 862
2 个回答

子字符串需要两个嵌套循环。

 function getAllSubstrings(str) {
  var i, j, result = [];

  for (i = 0; i < str.length; i++) {
      for (j = i + 1; j < str.length + 1; j++) {
          result.push(str.slice(i, j));
      }
  }
  return result;
}

var theString = 'somerandomword';
console.log(getAllSubstrings(theString));
 .as-console-wrapper { max-height: 100% !important; top: 0; }

原文由 Nina Scholz 发布,翻译遵循 CC BY-SA 3.0 许可协议

已接受答案的修改版本。为了给出排列的最小字符串长度

 function getAllSubstrings(str, size) {
  var i, j, result = [];
  size = (size || 0);
  for (i = 0; i < str.length; i++) {
    for (j = str.length; j - i >= size; j--) {
      result.push(str.slice(i, j));
    }
  }
  return result;
}

var theString = 'somerandomword';
console.log(getAllSubstrings(theString, 6));

原文由 vineetv2821993 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题