如何在由函数 p5.js 确定的子字符串上拆分字符串

How to split string on substrings determined by function p5.js

我设法找到了在给定数字串中重复的所有 n 位序列。虽然我的问题是如何拆分重复序列上的字符串,如本例所示:

字符串123543512

正在搜索 2 个数字序列

重复"12","35"

拆分字符串12 35 4 35 12

    var n = 2; 
    var a = 0;
    var b = n;
    var arr =[];

    function newText(input) {
      var str1 = textfield.value(); //given string
      while (a <= str1.length & b < str1.length+1) { 
        res = str1.substring(b, a);
        arr[a]=res;
        push();
        a = a + 1
        b = b + 1
      }         
        var potnij = arr.slice().sort();
        var takisam = []; //duplicates
        for (var i = 0; i < arr.length - 1; i++) {
            if (potnij[i + 1] == potnij[i]) {
                takisam.push(potnij[i]);
            }
        }
        console.log(takisam);
        }

您的第一站应该是 the P5.js reference

具体来说,the splitTokens() function 完全符合您的描述。你给它一个字符串,然后是要拆分的标记(子字符串)列表,然后它 returns 一个由这些标记分隔的字符串数组。

你可以找到所有这样的序列(只是一个粗略的例子)

const sequence = (str, len) => {
    return str.split('').reduce((acc, current) => {
        const last = acc[acc.length - 1];
        if (last) {
            const biggest = parseInt(last.slice(-1));
            if (current > biggest && last.length < (len || 2)) {
                acc.splice(-1, 1, "" + last + current);
                return acc
            }
        }
        acc.push(current);
        return acc;
    }, []);
};

如果需要,您可以添加数据验证和其他检查。然后你可以使用另一个函数来删除重复项。 请检查工作 fiddle https://jsfiddle.net/5vy6k4hp/3/