【问题标题】:How to switch two letters in a string如何切换字符串中的两个字母
【发布时间】:2014-07-21 08:44:51
【问题描述】:
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)

说 Ranint = 1 和 Ranint2 = 2 那么关键是 "BBCDEFGHIJKLMNOPQRSTUVWXYZ"

我的问题是如何更改密钥的代码以产生 "BACDEFGHIJKLMNOPQRSTUVWXYZ"

【问题讨论】:

    标签: javascript function random


    【解决方案1】:
    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

    【讨论】:

      【解决方案2】:

      这只是一个值得考虑的替代方案,以找到合适的:

      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));
      

      【讨论】:

        猜你喜欢
        • 2015-12-21
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 2016-01-28
        • 1970-01-01
        • 1970-01-01
        • 2020-02-06
        相关资源
        最近更新 更多