如何在由函数 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/
我设法找到了在给定数字串中重复的所有 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/