/*
* /////////////// ///////////_\\
* // || \\
* // || ||
* // || ||
* // || ||
* // || //
* // ||/////////_\\
* // || \\
* // || ||
* // || ||
* // || ||
* // || ||
* // || ||
* /////////////// ||/////////////
*
*/
实现目标
判断输入的内容是不是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...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。