2009-06-21 9 views
0
function randomString(len) { 
    // A random string of length 'len' made up of alphanumerics. 
    var out = ''; 
    for (var i=0; i<len; i++) { 
     var random_key = 48 + Math.floor(Math.random()*42); //0-9,a-z 
     out += String.fromCharCode(random_key); 
    } 
    window.alert(out); 
    return out; 
} 

String.fromCharCodeは、システムおよび/またはブラウザに依存しています。私が見てきたすべての回避策は、キーコードを実際にキャプチャしていないときに生成するものです。 ASCIIコードから変換するなど、これを行うより信頼性の高い方法がありますか?には、String.fromCharCodeの代わりに信頼できる代替手段が必要です

答えて

2

var random_key = 48 + Math.floor(Math.random()* 42); // 0-9、a-z

コードとコメントは対応していません。作成できる文字は、0-9、:、;、<、=、>、?、@、およびA-Zです。

この範囲の文字コードはASCII文字セットであるため、一般的に使用されるすべての西洋文字セットで同じです。 fromCharCodeメソッドは、ページに指定した文字セットを使用する必要がありますが、使用している範囲では問題ありません。

7は、狭い範囲を作成し、それが0-9とAZを取得するための数字ではない場合は39を追加します。

function randomString(len) { 
    // A random string of length 'len' made up of alphanumerics. 
    var out = ''; 
    for (var i=0; i<len; i++) { 
     var random_key = 48 + Math.floor(Math.random() * 36); 
     if (random_key > 57) random_key += 39; 
     out += String.fromCharCode(random_key); 
    } 
    window.alert(out); 
    return out; 
} 
+0

このテーブルを意味それは間違っている:http://www.cambiaresearch.com/c4 /702b8cd1-e5b0-42e6-83ac-25f0306e3e25/Javascript-Char-Codes-Key-Codes.aspx – SpliFF

+0

この表は、文字コードではなく、キーコード用です。たとえば、keydownイベントで押されたキーを判別するために使用します。テーブルには57から65の間に隙間があることにも注意してください。 – Guffa

関連する問題