js实现判断是不是2b

/*
 *  ///     ///_\\
 *              //      ||           \\
 *             //       ||           ||
 *            //        ||           ||
 *           //         ||           ||
 *          //          ||           //
 *         //           ||/_\\
 *        //            ||           \\
 *       //             ||            ||
 *      //              ||            ||
 *     //               ||            ||
 *    //                ||            ||
 *   //                 ||            ||
 *  ///     ||/
 *
 */

实现目标

判断输入的内容是不是2b(两个b) -- orz

代码

// languages.js 
// 多语言文件

module.exports = {
    pure: ['true', 'false'],
    English: ['Congratulations, it\'s two B!', 'Sorry, not two B!'], //英语
    Chinese: ['恭喜,是两个b!', '对不起,不是两个b!'], //中文
    Classical_Chinese: ['贺,是二b', '悲兮,非二b!'], //文言文
    Chinese_Traditional: ['恭喜,是兩個b!', '對不起,不是兩個b!'], //中文繁体
    Cantonese: ['恭喜,系两个b!', '对唔住,唔系两个b!'], //粤语
    Korea: ['축하해, 두 개의 b!', '죄송합니다. 아니, 두 b!'], //韩语
    French: ['Félicitations, c\'est deux B!', 'Désolé, pas deux B!'], //法语
    German: ['Herzlichen glückwunsch, sind zwei B!', 'Tut Mir leid, nicht zwei B!'], //德语
    Japanese: ['おめでとうございます、2つのbです!', 'すみません、2つのbではありません!'], //日语
    Italian: ['Congratulazioni, sono Due B!', 'Mi dispiace, non Due B!'], //意大利语
    Russian: ['Поздравляем, два б!', 'К сожалению, не два б!'], //俄语
    Thai: ['ขอแสดงความยินดี B สอง!', 'ขออภัยไม่สอง B!',], //泰语
    Arabic: ['مبروك، وهما ب!', 'عذرا، لا اثنين ب!'], //阿拉伯语,
    Finnish: ['Onneksi olkoon, kaksi b!', 'Valitettavasti ei kahta b!'] //芬兰语
}

// is_2b.js

/**
 * @param something {Array | String}
 * @returns {object}
 */

var languages = require('./languages.js');

var is_2b = function(something) {

  // 是否是严格模式。严格模式的话只能匹配'BB'或'bb'或'Bb'或'bB'
  // 非严格模式的话只要内容中B或b或6出现了两次,则匹配成功
  var strict = true; 
  // 直接在控制台输出匹配结果
  var isLog = false;
  // 在控制台输出内容可自定义语言,默认'pure',为true or false
  // 可选本地化语言,如英语,中文,粤语,文言文,法语等等
  var language = 'pure';
  var o_p_t = Object.prototype.toString;
  // 用于验证输入是否是数组
  var isII = function(p) {
    return o_p_t.call(p) === '[object Array]';
  }
  // 用于验证输入是否是字符串
  var isS = function(y) {
    return o_p_t.call(y) === '[object String]';
  }

  return {
    // 总出口函数,当输入是数组,就执行数组匹配函数,当输入是字符串,就执行字符串匹配函数
    two_b: function() {
      return ( isII(something) && this.II() ) || ( isS(something) && this.S() );
    },

    // 数组匹配函数
    II: function() {
      // 当严格模式打话,直接验证数组中是否是标准的两个b。非严格模式,走非严格模式匹配函数
      let ret = strict ? something.join('').toLowerCase() === 'bb' : this.unstrictII();
      // 控制台输出函数
      this.consolelog(ret);
      return ret;
    },
    // 数组非严格模式匹配函数
    unstrictII: function() {
      var IItoString = something.join('');
      var reg = /[Bb6]{1}\w*[Bb6]{1}/;
      return reg.test(IItoString);
    },

    // 字符串匹配函数
    S: function() {
      // 当严格模式打话,直接验证字符串中是否是标准的两个b。非严格模式,走非严格模式匹配函数
      let ret = strict ? something.toLowerCase() === 'bb' : this.unstrictS();
      // 控制台输出函数
      this.consolelog(ret);
      return ret;
    },
    // 字符串非严格模式匹配函数
    unstrictS: function() {
      var reg = /[Bb6]{1}\w*[Bb6]{1}/;
      return reg.test(something);
    },
    // 切换为非严格模式,链式回调,return this
    unstrict: function() {
      strict = false;
      return this;
    },
    // 控制台输出函数
    consolelog: function(bool) {
      // 如果isLog为true,输出从语言包匹配的文字
      if(isLog) {
        console.log(bool ? languages[language][0] : languages[language][1]);
      }
    },
    // 开启控制台输出, lang指定语言
    log(lang) {
      isLog = true;
      // 如果指定的lang语言在语言包中存在,则切换为指定语言
      for(var l in languages) {
        if(lang === l) {
          language = lang;
        }
      }
      //链式回调
      return this;
    }

  }
}

module.exports = is_2b;

使用

var is2b = require('is_two_b');
is2b('bb').two_b(); // true

非严格模式

is2b('b6s').unstrict().two_b(); // true
is2b('b6s').two_b(); // false

支持格式

// String
is2b('bb').two_b(); // true

// Array
is2b(['b','b']).two_b(); // true

多语言输出

// 原生输出
is2b('b6s').unstrict().log('pure').two_b(); // true
// 英语
is2b('b6s').unstrict().log('English').two_b(); // Congratulations, it's two B!
// 粤语
is2b('bs').unstrict().log('Cantonese').two_b(); // 对唔住,唔系两个b!
// 文言文
is2b('bs').unstrict().log('Classical_Chinese').two_b(); // 悲兮,非二b!
//韩语
is2b('b6s').unstrict().log('Korea').two_b(); // 축하해, 두 개의 b!
...

支持多国语言(不断添加)

  • 英语 -- English

  • 中文 -- Chinese

  • 文言文 -- Classical_Chinese

  • 中文繁体 -- Chinese_Traditional

  • 粤语 -- Cantonese

  • 韩语 -- Korea

  • 法语 -- French

  • 德语 -- German

  • 日语 -- Japanese

  • 意大利语 -- Italian

  • 俄语 -- Russian

  • 泰语 -- Thai

  • 阿拉伯语 -- Arabic

  • 芬兰语 -- Finnish

如果你看到了这里,恭喜,你跟我一样无聊ORZ~

哈哈,贴上github地址:https://github.com/PengJiyuan...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值