优秀的编程知识分享平台

网站首页 > 技术文章 正文

【JS 字符转换】fromCharCode和charCodeAt

nanyue 2024-11-01 12:46:17 技术文章 5 ℃

业务开发中经常会需要使用fromCharCode和charCodeAt来对字符串进行编码和转换,或者生成随机字符串来做唯一key,所以我封装了个方法来实现可控长度的随机字符串。具体通过下面三步实现

  • 使用Array.from生成特定范围的编号数组
  • 根据编号数组结合String.fromCharCode生成字符数组
  • 返回拼接的随机获取字符

// 生成特定范围的编号数组
function getRange(start, stop, step=1) {
  return Array.from({ length: (stop?-?start) / step + 1}, (_, i) => start + (i * step));
}
//根据编号数组结合String.fromCharCode生成字符数组
//[0-1a-zA-Z]
function getCharacters(n=8) {
  let str='',
      s = getRange('0'.charCodeAt(0), 'z'.charCodeAt(0), 1)
  .filter(x=>( (58>x && x>47) || (64<x && x<91) || (96<x && x<123)))
  .map(x => String.fromCharCode(x));
  while(n>0) {
    str += s[Math.floor(Math.random()*63)]
    n--
  }
  return str
}

getCharacters(n=8) // 26iQTup5
//返回带有连字符-的字符串
function getCharactersInKebab(n=8) {
  let str='',
      s = getRange('0'.charCodeAt(0), 'z'.charCodeAt(0), 1)
  .filter(x=>( (58>x && x>47) || (64<x && x<91) || (96<x && x<123)))
  .map(x => String.fromCharCode(x));
  while(n>0) {
    str += s[Math.floor(Math.random()*63)]
    n--
  }
  return str.replace(/(.{8})(?!$)/g,'$1-')
}
getCharactersInKebab(16) //'MlKOnMIZ-5xQ8ZHHL'

ps:

  • 'A'.charCodeAt() //65
  • 'Z'.charCodeAt() //90
  • 'a'.charCodeAt() //97
  • 'z'.charCodeAt() //122
  • '0'.charCodeAt() //48 '
  • 9'.charCodeAt() //57
  • [a-z]=>[97-122]
  • [A-Z]=>[65-90]
  • [0-9]=>[48-57]

Tags:

最近发表
标签列表