我想获得某个字符串的所有变体。这个字符串将用破折号分解。这些字母只能在这些破折号内变化。
例如,假设我通过DFI3-334-FG12
然后我想获取该字符串的所有变体,例如:
FI3-334-G12
FI3-334-F12
FI3-334-FG2
FI3-334-FG1
DI3-334-G12
DI3-334-F12
DI3-334-FG2
DI3-334-FG1
DF3-334-G12
DF3-334-F12
DF3-334-FG2
DF3-334-FG1
DFI-334-G12
DFI-334-F12
DFI-334-FG2
DFI-334-FG1
有人可以协助吗?我尝试过循环,但我只能将其分解并获得不同的部分:
FI3,DI3,DF3,DFI
334
G12,F12,FG2,FG1
这是我的代码:
$('#filter').on('click',function() {
var input = $('#code').val();
var parts = input.split("-");
var fixed = Array();
for(var i=0;i<parts.length; i++) {
if(parts[i].length != 3) {
k = 0;
fixed[i] = new Array();
for(var c=0;c<parts[i].length;c++) {
fixed[i][k] = parts[i].replace(parts[i].charAt(c),"");
k++;
}
} else {
fixed[i] = parts[i];
}
}
var final = Array();
$.each(fixed,function(i) {
$('#code_result').append(fixed[i] + "<br>");
})
});
答案 0 :(得分:0)
var string= 'DFI3-334-FG12';
var parts = string.split('-');
for(var i=0;i<parts[0].length;i++)
for(var j=0;j<parts[2].length;j++){
p1 = parts[0].substring(0,i)+parts[0].substring(i+1,parts[0].length);
p2 = parts[2].substring(0,j)+parts[2].substring(j+1,parts[2].length);
console.log(p1+'-'+parts[1]+'-'+p2);
}
答案 1 :(得分:0)
如果你知道有多少段(在这种情况下为3),你可以使用循环来获得所有可能的组合。
请参阅我的示例:
http://jsfiddle.net/a6647m9e/1/
for(var i=0; i<parts[0].length; ++i) {
for(var j=0; j<parts[1].length; ++j) {
for(var k=0; k<parts[2].length; ++k) {
strings.push(parts[0][i]+'-'+parts[1][j]+'-'+parts[2][k]);
}
}
}
只是你知道,你正在查看(2^parts[0].length - 1) * (2^parts[1].length - 1) * (2^parts[2].length - 1)
组合(在这种情况下为1575),取出空白组合。
注意:这完全取决于您对&#34;所有可能组合的定义&#34;是强>