Last active
December 17, 2015 08:59
-
-
Save brbsh/5584046 to your computer and use it in GitHub Desktop.
PAWN substring deleter
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Функция для вырезания подстроки из строки назначения | |
strsubdel(string[], const sub[], bool:sensetive = true, bool:repeating = true) | |
Аргументы: | |
string[] - строка обработки (назначения) | |
sub[] - подстрока, или то что нужно вырезать | |
bool:sensetive (true/false) - если true, функция будет чувствительна к регистру, иначе - нет | |
bool:repeating (true/false) - если true, вырежет все найденные подстроки, иначе - первую попавшуюся | |
Возвращает: | |
-1 - Возникла ошибка (строка пуста/введена пустая подстрока) | |
Иначе вернет количество вырезанных подстрок | |
*/ | |
stock strsubdel(string[], const sub[], bool:sensetive = true, bool:repeating = true) | |
{ | |
if((string[0] <= '\1') || (sub[0] <= '\1')) return -1; | |
new sublen = strlen(sub); | |
new found; | |
if(repeating) | |
{ | |
new rt; | |
while((found = strfind(string, sub, !sensetive)) != -1) | |
{ | |
strdel(string, found, (found + sublen)); | |
rt++; | |
} | |
return rt; | |
} | |
if((found = strfind(string, sub, !sensetive)) == -1) return -1; | |
strdel(string, found, (found + sublen)); | |
return 1; | |
} | |
/* | |
Функция для вырезания подстрок из строки назначения | |
strsubdel_ex(string[], bool:sensetive, bool:repeating, ...) | |
Аргументы: | |
string[] - строка обработки (назначения) | |
bool:sensetive (true/false) - если true, функция будет чувствительна к регистру, иначе - нет | |
bool:repeating (true/false) - если true, вырежет все найденные подстроки, иначе - первую попавшуюся | |
... - подстроки, которые нужно вырезать | |
Возвращает: | |
-1 - Возникла ошибка (строка пуста/введена пустая подстрока/превышено количество аргументов) | |
Иначе вернет количество вырезанных подстрок | |
*/ | |
stock strsubdel_ex(string[], bool:sensetive, bool:repeating, ...) | |
{ | |
new args; | |
if((string[0] <= '\1') || ((args = numargs()) == 3)) return -1; | |
for(new current = 3, arg[256], i; current != args; current++) | |
{ | |
while((arg[i] = getarg(current, i)) | |
{ | |
i++; | |
} | |
arg[i] = 0; | |
if((args = strfind(string, arg, !sensetive)) == -1) continue; | |
if(!repeating) | |
{ | |
strdel(string, args, (args + strlen(arg))); | |
rt++; | |
continue; | |
} | |
else | |
{ | |
while((args = strfind(string, arg, !sensetive)) != -1) | |
{ | |
strdel(string, args, (args + strlen(arg))); | |
rt++; | |
} | |
} | |
} | |
return rt; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment