JS正则应用之代码化APP名

目的是写一个 JavaScript 函数,主要利用正则表达式,实现英文 APP 名的代码化。

何谓代码化?
即转化符合^[A-Za-z][A-Za-z\d'\+\-_ ]*$,举例以明之:

| APP英文名 | 代码化 | 注 |
| :--- | :--- | |
| Alipay | alipay | |
| MX Player | mx_player | |
| CoolApk | cool_apk | |
| BlueDict Pro | blue_dict_pro | |
| Camera360 | camera_360 | |
| ViPER4Android FX | vi_per_4_android_fx | |
| Today's Headline | todays_headline | |
| Moon+ Reader | moon_plus_reader | |
| X-plore | x_plore | |
| Minecraft - Pocket Edition | minecraft_pocket_edition | |
| JD.COM | jd_com | |
| QQMusic | qqmusic | 这种情况需要人工处理为qq_music,类似还有 QQi |
| 58Life | | 不能以非字母开头 |

function codeAppName(name) {
  if (!name) {
    return "";
  }
  name = name.trim();
  if (name.length == 0) {
    return "";
  }
  if (/^[A-Za-z][A-Za-z\d'\+\-\. _]*$/.test(name)) {
    var res;
    while ((res = /([a-z][A-Z])|([A-Za-z]\d)|(\d[A-Za-z])/.exec(name)) != null) {
      name = name.replace(res[0], res[0].charAt(0) + "_" + res[0].charAt(1));
    }
    return name.toLowerCase()
      .replace(/'/g, "")
      .replace(/\+/g, "_plus")
      .replace(/-|\.| /g, "_")
      .replace(/_{2,}/g, '_');
  }
  return "";
}

挑选具有代表性的英文 APP 名进行测试:

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <title>Test</title>
 </head>
 <body>

<script type="text/javascript">
var apps = [
  ["Alipay", "alipay"],
  ["MX Player", "mx_player"],
  ["CoolApk", "cool_apk"],
  ["BlueDict Pro", "blue_dict_pro"],
  ["Camera360", "camera_360"],
  ["ViPER4Android FX", "vi_per_4_android_fx"],
  ["Today's Headline", "todays_headline"],
  ["Moon+ Reader", "moon_plus_reader"],
  ["X-plore", "x_plore"],
  ["Minecraft - Pocket Edition", "minecraft_pocket_edition"],
  ["JD.COM", "jd_com"],
  ["58Life", ""]
];
for (var i in apps) {
  var code = codeAppName(apps[i][0]);
  var pass = code == apps[i][1];
  document.write(pass + ": " + apps[i][0] + " >>> " + code);
  if (!pass) {
    document.write(" >>> " + apps[i][1]);
  }
  document.write("<br />");
}
</script>

 </body>
</html>

测试全部通过:

true: Alipay >>> alipay
true: MX Player >>> mx_player
true: CoolApk >>> cool_apk
true: BlueDict Pro >>> blue_dict_pro
true: Camera360 >>> camera_360
true: ViPER4Android FX >>> vi_per_4_android_fx
true: Today's Headline >>> todays_headline
true: Moon+ Reader >>> moon_plus_reader
true: X-plore >>> x_plore
true: Minecraft - Pocket Edition >>> minecraft_pocket_edition
true: JD.COM >>> jd_com
true: 58Life >>> 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,269评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,615评论 25 709
  • 有时候我们需要编写一些小的代码片段时,在Visual Studio中创建一个工程就显得有点杀鸡用牛刀的感觉了,所有...
    简约生活_忆沙阅读 1,839评论 0 0
  • 平平谈谈的日子,波澜不惊的度过,本周沉浸在甜蜜的幸福之中,孕育生命是一个美好的过程,夫君疼爱,主动承担家里的家务,...
    可爱的纯子阅读 184评论 0 0
  • 目前萌叔基金的钱,晓亮已转给了萌叔,具体明细如下: 无为群萌叔基金出资表: 7.7 萌大叔500元 7.7晓亮10...
    放心之语阅读 267评论 0 0