在JavaScript中编码为字母数字

如果我有一个随机string,并希望将其编码为仅包含字母数字字符的另一个string,那么在JavaScript / NodeJS中执行此操作的最有效方法是什么?

显然,必要时可以将输出string转换回原始inputstring。

谢谢!

要编码为字母数字string,您应该使用字母数字编码。 一些stream行的包括hex(base16),base32,base36,base58和base62。 使用hex的替代方法是因为较大的字母表会导致较短的编码string。 这里有一些信息:

  • hex是很stream行的,因为它很常见。
  • Base32和Base36对于不区分大小写的编码很有用。 Base32更易读,因为它可以去掉一些易于误读的字母。 Base32用于游戏和许可证密钥。
  • Base58和Base62对区分大小写的编码非常有用。 Base58也被devise成通过删除一些容易被误读的字母来更易读。 Base58被Flickr,比特币等使用。

在NodeJS中,hex编码是本地支持的 ,可以做如下:

 // Encode var hex = new Buffer(string).toString('hex'); // Decode var string = new Buffer(hex, 'hex').toString(); 

需要注意的是,其中一些实现有不同的实现。 例如,Flickr和Bitcoin使用不同的Base58实现。

为什么不把2个string存储在不同的variables中,所以不需要转换回来?

要提取所有字母数字,你可以使用正则expression式函数,如下所示:

 var str='dssldjf348902.-/dsfkjl'; var patt=/[^\w\d]*/g; var str2 = str.replace(patt,''); 

str2变成dssldjf348902dsfkjl