gpt4 book ai didi

javascript - 如何循环并构建 IP 地址

转载 作者:行者123 更新时间:2023-11-29 10:27:29 24 4
gpt4 key购买 nike

给定 1.1.%.%,其中 % 是通配符,我想遍历所有可能的 IP 地址。

到目前为止,我已经能够用循环成功替换 1%,但是当我尝试替换 2 时,它只是用相同的数字替换了它。以下是我目前的代码,任何有关如何放入第二个循环以获得第二个 % 的帮助将不胜感激。

代码:

var wildCount = inputSt.match(/\%/g)  //works out how many % are there
var newPlaceholder =''
for (var i = 0; i < wildCount.length; i++){
newPlaceHolder =inputSt.split("%").join(i)
for (var n = 0; n <=254; n++){
newPlaceholder = inputSt.split("%").join(n)
}
}

输出是 1.1.0.0,然后是 1.1.1.1,等等。

最佳答案

此版本的 anser 使用递归来执行 IP 创建。它按小数点拆分,然后递归遍历标记以查看它们是否为 %,如果是,则将它们交换为 [0, tokenLimit] 直到它耗尽所有可能性。

为了不炸浏览器,我把tokenLimit设置为11,而不是255。逻辑上已经加了注释,有详细的解释。

var test = '1.1.%.%';
var tokens = test.split( '.' );
var tokenLimit = 11;

// start the recursion loop on the first token, starting with replacement value 0
makeIP( tokens, 0, 0 );

function makeIP ( tokens, index, nextValue ) {
// if the index has not advanced past the last token, we need to
// evaluate if it should change
if ( index < tokens.length ) {
// if the token is % we need to replace it
if ( tokens[ index ] === '%' ) {
// while the nextValue is less than our max, we want to keep making ips
while ( nextValue < tokenLimit ) {
// slice the tokens array to get a new array that will not change the original
let newTokens = tokens.slice( 0 );
// change the token to a real value
newTokens[ index ] = nextValue++;

// move on to the next token
makeIP( newTokens, index + 1, 0 );
}
} else {
// the token was not %, move on to the next token
makeIP( tokens, index + 1, 0 );
}
} else {
// the index has advanced past the last token, print out the ip
console.log( tokens.join( '.' ) );
}
}

关于javascript - 如何循环并构建 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55263320/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com