js實現判斷是否是2b

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

實現目標

判斷輸入的內容是否是2b(兩個b) -- orzjavascript

代碼

// 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!
...

支持多國語言(不斷添加)java

  • 英語 -- Englishgit

  • 中文 -- Chinesegithub

  • 文言文 -- Classical_Chinese數組

  • 中文繁體 -- Chinese_Traditional函數

  • 粵語 -- Cantoneseui

  • 韓語 -- Koreathis

  • 法語 -- Frenchprototype

  • 德語 -- Germancode

  • 日語 -- Japanese

  • 意大利語 -- Italian

  • 俄語 -- Russian

  • 泰語 -- Thai

  • 阿拉伯語 -- Arabic

  • 芬蘭語 -- Finnish

若是你看到了這裏,恭喜,你跟我同樣無聊ORZ~

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

相關文章
相關標籤/搜索