美文网首页
JS正则应用之代码化APP名

JS正则应用之代码化APP名

作者: By_syk | 来源:发表于2017-06-15 15:27 被阅读31次

目的是写一个 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 >>> 

相关文章

网友评论

      本文标题:JS正则应用之代码化APP名

      本文链接:https://www.haomeiwen.com/subject/bjayqxtx.html