如何在字符串中切换两个字母

时间:2014-07-21 08:44:52

标签: javascript function random

var dkey = ""
function changekey(decryptionkey){
dkey = decryptionkey
var Ranint = Math.floor(Math.random() * 25) + 1
var Ranint2 = Math.floor(Math.random() * 25) + 1
if(Ranint===Ranint2){
   Ranint2+=1
   if(Ranint2>25){
       Ranint2-=3
   }
}
key = key.replace(key.charAt(Ranint),key.charAt(Ranint2))
} 
changekey(key)
alert(key)

Say Ranint = 1,Ranint2 = 2然后键是 " BBCDEFGHIJKLMNOPQRSTUVWXYZ"

我的问题是如何更改密钥的代码以导致结果 " BACDEFGHIJKLMNOPQRSTUVWXYZ"

2 个答案:

答案 0 :(得分:0)

String.prototype.setCharAt = function(index,chr) {
    if(index > this.length-1) return str;
    return this.substr(0,index) + chr + this.substr(index+1);
}

var dkey = "";
function changekey(decryptionkey){
dkey = decryptionkey;
var Ranint = Math.floor(Math.random() * 25) + 1;
var Ranint2 = Math.floor(Math.random() * 25) + 1;
if(Ranint===Ranint2){
   Ranint2+=1;
   if(Ranint2>25){
       Ranint2-=3;
   }
}
var firstChar = dkey.charAt(Ranint);
var secondChar = dkey.charAt(Ranint2);
    dkey = dkey.setCharAt(Ranint2, firstChar);
    dkey = dkey.setCharAt(Ranint, secondChar);
  return dkey;
} 
alert(changekey("ABCDEFGHIJKLMNOPQRSTUVWXYZ"));

DEMO

答案 1 :(得分:0)

这只是一个值得考虑的替代选择,找到合适的选择:

var myStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

function switchChar(str) 
{
    var randomA = getExclusiveRandom(str);
    var randomB = getExclusiveRandom(str, randomA);

    var replaceA = str[randomA];
    var replaceB = str[randomB];

    str = str.split("");

    str[randomA] = "["+replaceB+"]";
    str[randomB] = "["+replaceA+"]";

    return str.join("");
}

function getExclusiveRandom(str, exclude)
{
    var res = Math.floor(Math.random() * str.length) + 1;

    if(!exclude)
    {
        return res;
    }
    else 
    {
        if(res === exclude)
        {
            res = getExclusiveRandom(str, exclude);
        }    

        return res;
    }
}

console.info(switchChar(myStr));