2012-11-05 109 views
-1

我需要製作一個keyMaker函數,它隨機生成一個長度恰好爲23個字符的字符串。它們需要是小寫字母,並且在每組五個之間用連字符分組爲五個組。 (例如fdior-fhwkd-ruwka-qozsm)。隨機字符生成器Java

我需要使用的字符數轉換成字符的字符串函數(A = 97,Z = 122 ...)

+2

歡迎來到Stack Overflow!你是指Java還是JavaScript?兩者完全不同。此外,[你到目前爲止嘗試過什麼?](http://whathaveyoutried.com) –

+0

我很想投票。請發佈你迄今爲止的嘗試? – Srinivas

+0

_「我需要使用將字符數轉換爲字符的字符串函數」_ - 如果您使用允許的字符數組並且從該數組中隨機選擇,則不是。你確實在你的問題上使用了「數組」標籤... – nnnnnn

回答

1
private static Random rnd = new Random(); 

public static String makeRandomString() { 
    char nextChar; 
    StringBuilder sb = new StringBuilder(); 

    for(int i = 0; i < 20; i++) { 
     // lowercase characters go from 97 to 122 
     nextChar = (char) (rnd.nextInt(26) + 97); 
     sb.append(nextChar); 
     if ((i + 1) % 5 == 0 && i != 19) sb.append('-'); 
    } 

    return sb.toString(); 
} 
+0

Upvoting然而,這是勺子餵養。我期待@wdebvrd發佈他的嘗試。 – Srinivas

1

這裏是在Javascript的解決方案:

function generateKeyString() { 
    var key = "", random; 
    var letters = "abcdefghijklmnopqrstuvwxyz"; 
    for (var i = 0; i < 20; i++) { 
     if (i !== 0 && i % 5 === 0) { 
      key += "-"; 
     } 
     random = Math.floor(Math.random() * letters.length); 
     key += letters.charAt(random); 
    } 
    return(key); 
} 

工作演示:http://jsfiddle.net/jfriend00/9mFb5/

+0

我有興趣知道什麼更快,這個實現或使用'var chr = String.fromCharCode(97 + n);''哪裏'n'是一個隨機數的東西。但我沒有設置一個JavaScript開發環境 – durron597

+1

@ durron597你不需要JS環境「設置」:http://jsfiddle.net - 或者更好的基準測試,http://jsperf.com –

+0

@ durron597 - 你甚至不需要互聯網連接來測試這樣的性能:任何瀏覽器和任何文本編輯器都可以完成工作...... – nnnnnn