【问题标题】:Decoding string to array values in javascript在javascript中将字符串解码为数组值
【发布时间】:2014-11-01 18:13:00
【问题描述】:

我有 2 个带有一些字符的字符串。其中一种是“捣碎”的字符,另一种是具有一定意义的有序字符。例如:

wvEr2JmJUs2JRr:7Fob9WIB8mSOA?w0s2E:7-f/-G/N-.f7jN:Mi:.CDfGX7tn!
Identification: zpE?bkHlfYS-hIDate: 07/08/2057 12:34:56.789 CGT

如您所见 - 第一个具有等价的符号,与第二个中的等号相同。 任务是 - 从它们中创建某种字母表,因为我有第三个必须“解码”的字符串。 (wvEr2JmJUs2JRr:7a1AJvvHvAmRRWsxWsFAvJvAJAaoE88A2?s2AxJ1?290s2E:7-f/-G/N-.f7jN:MC:ifDCGN7tn!)。 这里棘手的部分是 - 如果我很确定前两个字符串它们像许多字符一样绝对相等,那么关于新的 - 符号的数量完全不同,但它们包含在 "字母表”

这是我当前创建“字母”的代码:

var enc = "wvEr2JmJUs2JRr:7Fob9WIB8mSOA?w0s2E:7-f/-G/N-.f7jN:Mi:.CDfGX7tn!";

var dec = "Identification: zpE?bkHlfYS-hIDate: 07/08/2057 12:34:56.789 CGT";

var newenc = "wvEr2JmJUs2JRr:7a1AJvvHvAmRRWsxWsFAvJvAJAaoE88A2?s2AxJ1?290s2E:7-f/-G/N-.f7jN:MC:ifDCGN7tn!";

var myenc = {};

var mynewenc = {};

for (i = 0; i < enc.length; i+=1) {
var encoded = new Array(enc[i]);
var decoded = new Array(dec[i]);


myenc[enc[i]] = dec[i];
};

console.log(myenc);

现在 - 我必须如何使用这个“字母表”解码新的字符串?

【问题讨论】:

    标签: javascript arrays string decoding


    【解决方案1】:

    如果我理解得很好,您可以尝试使用此代码。 它在您的 enc 变量中找到适当的编码字母,如果找到该字母,它将用您的 dec 变量中的相应字母替换它。

    var enc = "wvEr2JmJUs2JRr:7Fob9WIB8mSOA?w0s2E:7-f/-G/N-.f7jN:Mi:.CDfGX7tn!";
    
    var dec = "Identification: zpE?bkHlfYS-hIDate: 07/08/2057 12:34:56.789 CGT";
    
    var newenc = "wvEr2JmJUs2JRr:7a1AJvvHvAmRRWsxWsFAvJvAJAaoE88A2?s2AxJ1?290s2E:7-f/-G/N-.f7jN:MC:ifDCGN7tn!";
    
    for (i = 0; i < newenc.length; i++) {
        for (j = 0; j < enc.length; j++) {
            if (enc[j] == newenc[i])
                newenc[i] = dec[j];
        }
    };
    
    console.log(newenc);
    

    最后你的变量 newenc 可能包含你解码的字符串。

    【讨论】:

      【解决方案2】:
      var enc = "wvEr2JmJUs2JRr:7Fob9WIB8mSOA?w0s2E:7-f/-G/N-.f7jN:Mi:.CDfGX7tn!";
      var dec = "Identification: zpE?bkHlfYS-hIDate: 07/08/2057 12:34:56.789 CGT";
      
      var newenc = "wvEr2JmJUs2JRr:7a1AJvvHvAmRRWsxWsFAvJvAJAaoE88A2?s2AxJ1?290s2E:7-f/-G/N-.f7jN:MC:ifDCGN7tn!";
      
      function make_dictionary(enc, dec){
          o = new Object();
          if(enc.length == dec.length){
              for(i=0; i<enc.length; i++){
                  o[enc[i]] = dec[i];
              }
          }
          else{
              console.log('error');
          }
          return o;
      }
      
      function translate(newenc, dictionary, fill){
          var newstring = '';
          for(i=0; i<newenc.length; i++){
              if(typeof dictionary[newenc[i]] !== 'undefined'){
                  newstring += dictionary[newenc[i]];
              }
              else{
                  newstring += fill;
              }
      
          }
          return newstring;
      }
      
      var d = make_dictionary(enc, dec);
      console.log(d);
      var string = translate(enc, d, '_');
      console.log(string);
      var string = translate(newenc, d, '_');
      console.log(string);
      

      【讨论】:

        【解决方案3】:

        这是您可以处理它的一种方法(据我了解这个问题):

        // Create your dictionary
        var dict = {};
        
        var enc = "wvEr2JmJUs2JRr:7Fob9WIB8mSOA?w0s2E:7-f/-G/N-.f7jN:Mi:.CDfGX7tn!".split('');
        var dec = "Identification: zpE?bkHlfYS-hIDate: 07/08/2057 12:34:56.789 CGT".split('');
        
        // Populate your dictionary
        for (var i = 0; i < enc.length; i++) {
          dict[enc[i]] = dec[i];
        }
        
        // You can use your dictionary like this
        var newenc = "wvEr2JmJUs2JRr:7a1AJvvHvAmRRWsxWsFAvJvAJAaoE88A2?s2AxJ1?290s2E:7-f/-G/N-.f7jN:MC:ifDCGN7tn!".split('');
        
        // Returns your translated string
        newenc.map(function(e) {
          return dict[e];
        }).join('');
        

        但是,对于此方法,您必须处理在 newenc 中定义但在 enc 中未定义的字符(例如 T)。鉴于您所描述的情况和规则,我已尽力做到最好,希望对您有所帮助!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-08-17
          • 1970-01-01
          • 1970-01-01
          • 2017-01-05
          • 2012-07-07
          • 2021-09-17
          • 1970-01-01
          相关资源
          最近更新 更多