Javascript 从字符串中随机抽取字母

Javascript 从字符串中随机抽取字母,javascript,jquery,arrays,substr,Javascript,Jquery,Arrays,Substr,我想从字符串中删除3个随机字母 我可以使用类似substr()或slice()的函数,但它不允许我取出随机字母 这是我现在的演示 任何帮助都将不胜感激 您可以将字符串转换为数组、随机项,然后再转换为字符串: var arr = str.split(''); for(var i=0; i<3; ++i) arr.splice(Math.floor(Math.random() * arr.length), 1); str = arr.join(''); var arr=str.sp

我想从字符串中删除3个随机字母

我可以使用类似
substr()
slice()
的函数,但它不允许我取出随机字母

这是我现在的演示

任何帮助都将不胜感激

您可以将字符串转换为数组、随机项,然后再转换为字符串:

var arr = str.split('');
for(var i=0; i<3; ++i)
    arr.splice(Math.floor(Math.random() * arr.length), 1);
str = arr.join('');
var arr=str.split(“”);
对于(var i=0;i,可以将字符串转换为数组、随机项和返回字符串:

var arr = str.split('');
for(var i=0; i<3; ++i)
    arr.splice(Math.floor(Math.random() * arr.length), 1);
str = arr.join('');
var arr=str.split(“”);
对于(var i=0;i
var str=“cat123”,
amountLetters=3,
随机字符串=”;
对于(变量i=0;i
小提琴:
var str=“cat123”,
amountLetters=3,
随机字符串=”;
对于(变量i=0;i
小提琴:

您可以在不使用任何参数的情况下使用拆分方法。 这将以数组的形式返回所有字符

然后可以使用中所述的任意随机化器函数,然后使用该位置获取该位置处的角色

看看这里的@my实现

var str = "cat123";
var strArray = str.split("");

function getRandomizer(bottom, top) {
        return Math.floor( Math.random() * ( 1 + top - bottom ) ) + bottom;
    }
alert("Total length " + strArray.length);
var nrand = getRandomizer(1, strArray.length);
alert("Randon number between range 1 - length of string " + nrand);

alert("Character @ random position " + strArray[nrand]);

Code@here

您可以在不使用任何参数的情况下使用split方法。 这将以数组的形式返回所有字符

然后可以使用中所述的任意随机化器函数,然后使用该位置获取该位置处的角色

看看这里的@my实现

var str = "cat123";
var strArray = str.split("");

function getRandomizer(bottom, top) {
        return Math.floor( Math.random() * ( 1 + top - bottom ) ) + bottom;
    }
alert("Total length " + strArray.length);
var nrand = getRandomizer(1, strArray.length);
alert("Randon number between range 1 - length of string " + nrand);

alert("Character @ random position " + strArray[nrand]);
代码@here

表示

将字符串切片两次[…]要比先使用拆分再使用联接[…]更快

因此,虽然效果很好,但我认为更快的实施方式是:

function removeRandom(str, amount)
{
    for(var i = 0; i < amount; i++)
    {
        var max = str.length - 1;
        var pos = Math.round(Math.random() * max);
        str = str.slice(0, pos) + str.slice(pos + 1);
    }
    return str;
}
函数删除对象(str,amount)
{
对于(变量i=0;i
另请参见。

说明

将字符串切片两次[…]要比先使用拆分再使用联接[…]更快

因此,虽然效果很好,但我认为更快的实施方式是:

function removeRandom(str, amount)
{
    for(var i = 0; i < amount; i++)
    {
        var max = str.length - 1;
        var pos = Math.round(Math.random() * max);
        str = str.slice(0, pos) + str.slice(pos + 1);
    }
    return str;
}
函数删除对象(str,amount)
{
对于(变量i=0;i

另请参见。

您可以对字符串中的字符进行洗牌,然后删除前3个字符

var str = 'congratulations';

String.prototype.removeItems = function (num) {
    var a = this.split(""),
        n = a.length;

    for(var i = n - 1; i > 0; i--) {
        var j = Math.floor(Math.random() * (i + 1));
        var tmp = a[i];
        a[i] = a[j];
        a[j] = tmp;
    }
    return a.join("").substring(num);
}

alert(str.removeItems(3));

您可以洗牌字符串中的字符,然后删除前3个字符

var str = 'congratulations';

String.prototype.removeItems = function (num) {
    var a = this.split(""),
        n = a.length;

    for(var i = n - 1; i > 0; i--) {
        var j = Math.floor(Math.random() * (i + 1));
        var tmp = a[i];
        a[i] = a[j];
        a[j] = tmp;
    }
    return a.join("").substring(num);
}

alert(str.removeItems(3));


从字符串中删除一个随机的3个字母序列?如abc'123'或'bc1'23,其中''表示删除的内容?从字符串中删除一个随机的3个字母序列?如abc'123'或'bc1'23,其中''表示删除的内容?是否可以使其不删除3个字母…而将单词的任何3个字母替换为3个random字母?是否可以这样做,而不是删除3个字母…用3个随机字母替换单词的任何3个字母?是否可以这样做,而不是删除3个字母…用3个随机字母替换单词的任何3个字母?是否可以这样做,而不是删除3个字母ters…用3个随机字母替换单词的任何3个字母?是否可以这样做,而不是删除3个字母…用3个随机字母替换单词的任何3个字母?当然可以。
function subsctitute(str){var pos=Math.floor(Math.random()*str.length);返回str.substring(0,pos)+getRandomLetter()+str.substring(pos+1);}函数getRandomLetter(){var可能=“abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz012456789”;var pos=Math.floor(Math.random()*letters.length);return letters.charAt(pos);}
是否有可能不删除3个字母,而是用3个随机字母替换单词中的任何3个字母?当然可以。
函数子字符串(str){var pos=Math.floor(Math.random()*str.length);返回str.substring(0,pos)+getRandomLetter()+str.substring(pos+1);}函数getRandomLetter(){var-pos=Math.floor(Math.random()*letters.length);return-letters.charAt(pos);}
是否可以这样做,而不是删除3个字母…用3个随机字母替换单词的任何3个字母?@user4756836是:
arr[Math.floor](Math.random()*arr.length)]=randomLetter()
randomLetter
的定义将根据您需要的字符(a-z、a-z、数字、拉丁字母1等)而有所不同。
[Math.floor(Math.random()*arr.length)]=randomLetter()
randomLetter
的定义将根据需要的字符(a-z、a-z、数字、拉丁字母1等)而有所不同.是否可以这样做,而不是删除3个字母…用3个随机字母替换单词的任何3个字母?是否可以这样做,而不是删除3个字母…用3个随机字母替换单词的任何3个字母?是否可以这样做,而不是删除3个字母…重播用3个随机字母替换单词中的任意3个字母?@user4756836你能更具体一点吗?你想用随机位置替换随机字符吗?我想用a-z中的任意字母替换单词中的任意3个随机字母。例如,如果单词是Hello Kitty…它可能会变为Hezls KiltyYeah。这很简单。用all定义一个数组英文字母。从随机数生成器生成2个数字。Num1将是