2

私がこれまでに試したことから、文字列から部分文字列の文字を分割しようとしていますが、ループ内でループしても失敗しました。

文字列「1234567890」の結果の例は、次のようになります。

12
345
6
7890

.

var randomChar = ""
var str = "123456789";

for (var j = 0; j < str.length; j++) {
randomChar = Math.floor(Math.random() * 3) + 1;

console.log(str.substr(j, randomChar));
}
4

3 に答える 3

2

どうぞ:

    var substrSize;
    while (str.length) {
         substrSize = Math.floor(Math.random()*3)+1; // at most 4? 
         if (substrSize >= str.length)
             randomChar = str;
         else
             randomChar = str.substr(0,substrSize);
         str = str.substr(randomChar.length);
         console.log(randomChar);
    }

または代わりに:

    var j = 0;
    while (j < str.length) {
         var n= j+Math.floor(Math.random() * 3) + 1;
         if (n> str.length) n= str.length;
         console.log(str.substring(j, n));
         j = n;
    }

または代わりに:

    var j = 0;
    while (j < str.length) {
         var n= Math.floor(Math.random() * 3) + 1;
         if (j+n> str.length) n= str.length-j;
         console.log(str.substr(j, n));
         j += n;
    }
于 2013-01-19T20:04:56.713 に答える
2

コードの問題は、常に何度も反復することですstr.length。たとえば、最初の 3 つのランダムな文字を切り取った後、2 番目からではなく、4 番目から開始する必要があります。

そして、これはエレガントな再帰的ソリューションであり、あなたのものとは大きく異なります:

function randString(s) {
   if(s.length > 0) {
     var pivot = Math.ceil(Math.random() * 3);
     console.info(s.substring(0, pivot));
     randString(s.substring(pivot));
   }
}
于 2013-01-19T20:05:00.870 に答える
1
var randomChar = ""
var str = "123456789";
var j = 0;
while (j < str.length) {
    randomChar = Math.floor(Math.random() * 3) + 1;
    console.log(str.substr(j, randomChar));
    j += randomChar;
}
于 2013-01-19T20:08:50.963 に答える