2012-11-05 110 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