SORU
23 Mayıs 2012, ÇARŞAMBA


JavaScript alfanümerik dize rastgele?

En kısa yol (makul) muhtemelen benzersiz bir tanımlayıcı olarak kullanmak için JavaScript alfa-sayısal (büyük harf, küçük harf ve sayılar) rastgele bir dize oluşturmak için?

CEVAP
23 Mayıs 2012, ÇARŞAMBA


Eğer sadece belirli karakterlere izin vermek istiyorsanız, Ayrıca bu şekilde yapabilirsin:

function randomString(length, chars) {
    var result = '';
    for (var i = length; i > 0; --i) result  = chars[Math.round(Math.random() * (chars.length - 1))];
    return result;
}
var rString = randomString(32, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');

Bir jsfiddle göstermek için burada: http://jsfiddle.net/wSQBx/

Bunu yapmak için başka bir yol kullanmak için karakter işlevi ne tür söyleyen özel bir dize kullanmak için olabilir. Bu gibi yapabilirsin:

function randomString(length, chars) {
    var mask = '';
    if (chars.indexOf('a') > -1) mask  = 'abcdefghijklmnopqrstuvwxyz';
    if (chars.indexOf('A') > -1) mask  = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    if (chars.indexOf('#') > -1) mask  = '0123456789';
    if (chars.indexOf('!') > -1) mask  = '~`!@#$%^&*()_ -={}[]:";\'<>?,./|\\';
    var result = '';
    for (var i = length; i > 0; --i) result  = mask[Math.round(Math.random() * (mask.length - 1))];
    return result;
}

console.log(randomString(16, 'aA'));
console.log(randomString(32, '#aA'));
console.log(randomString(64, '#A!'));

Keman: http://jsfiddle.net/wSQBx/2/

Alternatif olarak, aşağıda açıklandığı gibi base36 yöntemi kullanmak için böyle bir şey yapabilirsin:

function randomString(length) {
    return Math.round((Math.pow(36, length   1) - Math.random() * Math.pow(36, length))).toString(36).slice(1);
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Christian Atlas

    Christian At

    26 Mart 2009
  • Joseph Hayhoe

    Joseph Hayho

    20 Mayıs 2010
  • TurkishRoyal

    TurkishRoyal

    16 Ocak 2007