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 个随机字符后,您应该从第 4 个开始,而不是从第 2 个开始。

这是一个优雅的递归解决方案,与您的大不相同:

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 回答