Скрипт позволяет проверить сразу несколько подстрок в строке
ф-ия:
chk(str, obj, ret); // str - проверяемая строка, obj - что проверять (об это подробнее ниже), ret - что возвращать (подробнее ниже)
obj - передаваемый объект, в котором указываются уже имеющиемся массивы:
- EngB - английский алфавит БОЛЬШОЙ
- EngS - английский алфавит МАЛЕНЬКИЙ
- Eng - английский алфавит
- RusB - русский алфавит БОЛЬШОЙ
- RusS - русский алфавит МАЛЕНЬКИЙ
- Rus - русский алфавит
- nums - цифры
- sign - +, -, *, / знаки (скрипт создавался изначально для калькулятора, поэтому имеется такой массив)
Пример передаваемого объекта
{"EnbG" : "A", "nums" : "0"}
Первое - что проверять, второе - исключения, то есть, проверяем массив EngB, но без буквы 'A', проверяем массив с цифрами, но убираем '0'
Так же можно проверять не готовое, а свое, используя 'my', пример:
{"my" : "=,`"}
Перечисляем через ','
ret - что возвращать? По умолчанию стоит 'boolean', но вы можете указать 'index' и 'word'. 'index' вернет позицию, где встретилось первое совпадение, 'word' вернет то, что совпало
Полные примеры использования:
var str = "Privet ya chelovek!";
alert(chk(str, {"EngB" : ""}, "index"));
alert(chk(str, {"my" : "!"}));
alert(chk(str, {"nums" : ""}, "boolean"));
Код:
/*
Author: FroZo
Date: 30.06.14
Time: 19:52
Functions: chk() return[typeof : boolean/number/string];
*/
function chk(str, pars, ret){
if(ret == undefined){
ret = "boolean";
}
if(str == undefined){
if(ret == "boolean"){
return false;
}
else if(ret == "index"){
return -1;
}
else if(ret == "word"){
return "";
}
}
/* CONSTANTS */
var EngB = "QWERTYUIOPASDFGHJKLZXCVBNM".split("");
var EngS = EngB.join("").toLowerCase().split("");
var Eng = EngB.concat(EngS);
var RusB = "ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ".split("");
var RusS = RusB.join("").toLowerCase().split("");
var Rus = RusB.concat(RusS);
var nums = "0123456789".split("");
var signs = "+-/*".split("");
var tmp = [];
for(var p in pars){
if(typeof pars[p] == "string" && pars[p] != ""){
pars[p] = pars[p].split(",");
}
}
for(var p in pars){
if(p == "EngB"){
tmp = EngB;
}
else if(p == "EngS"){
tmp = EngS;
}
else if(p == "Eng"){
tmp = Eng;
}
else if(p == "RuB"){
tmp = RusB;
}
else if(p == "RusS"){
tmp = RusS;
}
else if(p == "nums"){
tmp = nums;
}
else if(p == "signs"){
tmp = signs;
}
else if(p == "my"){
tmp = pars[p];
}
if(p != "my" && pars[p] != ""){
for(var i = 0; i < tmp.length; i++){
for(var k = 0; k < pars[p].length; k++){
if(tmp[i] == pars[p][k]){
tmp.splice(i, 1);
}
}
}
}
for(var i = 0; i < tmp.length; i++){
if(str.indexOf(tmp[i]) != -1){
if(ret == "boolean"){
return true;
}
else if(ret == "index"){
return str.indexOf(tmp[i]);
}
else if(ret == "word"){
return tmp[i];
}
}
}
}
if(ret == "boolean"){
return false;
}
else if(ret == "index"){
return -1;
}
else if(ret == "word"){
return "";
}
}