在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